700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python实现socket编程 服务端开启多线程(和多个客户端聊天)

python实现socket编程 服务端开启多线程(和多个客户端聊天)

时间:2018-10-25 12:26:07

相关推荐

python实现socket编程 服务端开启多线程(和多个客户端聊天)

首先运行服务端,待服务端运行起来之后,最后开始运行客户端进行对话,可以运行多个客户端和服务端对话,注意这个开启的客户端的顺序和服务端的聊天顺序(其实就是阻塞,待上一个客户端和服务端的一段对话结束之后,开启另外一个客户端和服务端的对话)。

客户端:

import osimport cv2import socketremote_IP='127.0.0.1'remote_port=5555remote_addr=(remote_IP,remote_port)socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)socket.connect(remote_addr)def client_send_recv(socket):""":param socket: 客户端套接字:return:"""while True:print('结束对话: (Q)')str=input('请输入发送给服务端的内容对话内容: ')if str=='Q' or str=='q':str = str.encode('utf-8')socket.send(str)print('客户端结束对话')breakelse:str=str.encode('utf-8')socket.send(str)str=socket.recv(1024).decode('utf-8')if str == 'Q' or str == 'q':print('服务器结束对话')breakprint('接收来自服务端发送的内容: {}'.format(str))socket.close()if __name__=='__main__':client_send_recv(socket)

服务端:

import osimport cv2import socketimport threadingremote_IP='127.0.0.1'remote_port=5555remote_addr=(remote_IP,remote_port)socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#绑定IP地址和端口号socket.bind(remote_addr)#监听来自客户端的信息socket.listen()print('正在监听来自客户端的信息......')IsConnection=Truedef server_send_recv(new_socket,addr):""":param new_socket::return:"""global IsConnectionwhile True:print('结束对话: (Q or q)')str=new_socket.recv(1024).decode('utf-8')if str=='Q' or str=='q':print('服务器结束对话')IsConnection=Falsebreakelse:print(str)str=input('请输入发送给客户端的内容对话内容: ')str=str.encode('utf-8')new_socket.send(str)if str=='q' or str=='Q':print('服务器对话结束')IsConnection = Falsebreaknew_socket.close()if __name__=='__main__':while True:# new_socket用于与客户机的对话new_socket, addr = socket.accept()thread_server=threading.Thread(target=server_send_recv,args=(new_socket,addr))thread_server.start()if IsConnection==False:break

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。