python服务端对应多个客户端_Python-网络编程:TCP2 循环为多个客户端服务
參考代碼:
客戶端:
import socket
def main():
# 1.創建tcp的套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.連接服務器
# tcp_socket.connect("127.0.0.1", 1897)
server_ip = input("請輸入服務器ip:")
server_port = input("請輸入服務器port:")
server_addr = (server_ip, int(server_port))
tcp_socket.connect(server_addr)
while True:
# 3.發送數據/接收數據
send_data = input("請輸入要發送的數據:")
if send_data == 'exit' or send_data == 'quit':
break
tcp_socket.send(send_data.encode('utf-8'))
recv_data = tcp_socket.recv(1024)
print(recv_data.decode('utf-8'))
# 4.關閉套接字
tcp_socket.close()
if __name__ == "__main__":
main()
服務端:
import socket
def main():
# 1.創建一個TCP套接字
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.綁定信息
local_addr = ("", 7890)
tcp_server_socket.bind(local_addr)
# 3.設為監聽模式
tcp_server_socket.listen(128)
while True:
# 4.accept等待。返回:連接進來的客戶端創建新的套接字,連接進來的客戶端的地址
print("等待一個客戶端的到來:")
new_socket, client_addr = tcp_server_socket.accept()
print("來自一個客戶端 ", client_addr)
while True:
# 5.接收客戶端數據
recv_data = new_socket.recv(1024)
# 如果recv_data解堵塞,那么有兩種方式:
# (1) 客戶端發送過來數據
# (2) 客戶端調用close導致了這里解堵塞
#如果是空的,說明客戶端關閉了
if not recv_data:
print("bye:", client_addr)
break
# 打印客戶端發送來的數據
print("receive data from client is: ", recv_data.decode('utf-8'))
# 給客戶端發送數據
new_socket.send("--ok--".encode('utf-8'))
# 關閉這次accpet創建的為了這次服務的套接字
new_socket.close()
# 7.關閉監聽的套接字
tcp_server_socket.close()
if __name__ == "__main__":
main()
運行結果:
標簽:__,socket,Python,tcp,server,TCP2,data,客戶端
總結
以上是生活随笔為你收集整理的python服务端对应多个客户端_Python-网络编程:TCP2 循环为多个客户端服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python ascii转utf8_as
- 下一篇: python 通登录银行_Python3