使用代码实现:
# 服务器 from socket import * from threading import Thread # 接收客户端的信息和连接状态 def recv_data(client_socket,client_info): while True: recv_data = client_socket.recv(1024) recv_content = recv_data.decode('gbk') print(f'客户端说:{recv_content},来自:{client_info}') if recv_content == 'end': print('结束消息') break # 服务器向客户端发送信息 def send_data(): while True: msg = input('>') client_socket.send(msg.encode('gbk')) if msg == 'end': print('消息结束') break if __name__ == '__main__': # 创建套接字 server_socket = socket(AF_INET,SOCK_STREAM) # 换为本机的IP,8888为使用的接口 server_socket.bind(('192.168.10.124',8888)) # 启动被动连接,设置多少个客户端可以连接 server_socket.listen(5) print('等待链接!') while True: client_socket, client_info = server_socket.accept() print("一个客户端建立连接成功!") t = Thread(target=recv_data, args=(client_socket, client_info)) #创建线程来处理接收客户端的信息 t1 = Thread(target=send_data) #创建线程发送收服务端端的信息 t.start() #启动线程 t1.start()
# 客户端 from socket import * from threading import Thread def recv_data(): while True: # 接收服务器端数据 recv_data = client_socket.recv(1024) recv_content = recv_data.decode('gbk') print(f'服务端说:{recv_content}') if recv_content == 'end': print('结束消息') break #可以向服务器发送信息 def send_data(): while True: msg =input('>') client_socket.send(msg.encode('gbk')) if msg == 'end': print('消息结束') break if __name__ == '__main__': # 创建套接字 client_socket = socket(AF_INET,SOCK_STREAM) # 换为本机的IP,8888为使用的接口 client_socket.connect(('192.168.10.124',8888)) t1 = Thread(target=recv_data) t2 = Thread(target=send_data) t1.start() t2.start() t1.join() t2.join() client_socket.close()