Python TCP 协议网络编程《四》
今日主题:在Python TCP 协议网络编程《三》的基础上进行多线程的处理,可以让消息不断的发送不用等待回复后才可以继续发消息,同时也优化了服务端的代码,它主要是做消息的转发,实现多个客户端之间的消息互通。
具体实现代码如下:
server.py文件内容如下
1from socket import socket,SOCK_STREAM,AF_INET #导入模块 2from threading import Thread #导入线程包 3 4sockets=[] #用于存放所有请求过来的client的socket 5 6def tcp_server(): 7 tcp_server_socket=socket(AF_INET,SOCK_STREAM) #创建TCP服务端套接字对接,UDP是SOCK_DGRAM 8 server_address=('127.0.0.1',9999)#定义本TCP服务端的ip and port 9 tcp_server_socket.bind(server_address) #绑定本机的8888端口 10 tcp_server_socket.listen(128) #设置监听,并设置最大等待连接数为128 11 12 while 1: 13 print("i'm accepting") 14 client_socket, client_info = tcp_server_socket.accept() # 接收客户端的socker and info 15 print(client_socket,client_info) 16 sockets.append(client_socket) 17 t=Thread(target=get_msg,args=(client_socket,)) #开启线程来处理当前请求过来的client 18 t.start() 19 20def get_msg(client_socket): 21 while 1: 22 data=client_socket.recv(1024) 23 print("the data:",data) 24 if(len(data)>0): 25 for sk in sockets: 26 print(sk,data) 27 sk.send(data) 28 29 30if __name__ == '__main__': 31 print("the TCP server is running ...") 32 tcp_server()
client.py文件内容如下
1from socket import socket,SOCK_STREAM,AF_INET #导入模块 2from threading import Thread #导入线程包 3import time 4 5tcp_client_socket = socket(AF_INET, SOCK_STREAM) # 创建TCP客户端套接字对接 6server_address = ('127.0.0.1', 9999) # 定义本TCP服务端的ip and port 7tcp_client_socket.connect(server_address) # 连接到服务端 8 9def tcp_client(): 10 thread1=Thread(target=read_msg,args=(tcp_client_socket,)) 11 thread1.start() 12 13 thread2= Thread(target=send_msg, args=(tcp_client_socket,)) 14 thread2.start() 15 16def send_msg(tcp_client_socket): 17 while 1: 18 message=input(">>>") 19 tcp_client_socket.send(message.encode("utf-8")) 20 time.sleep(1)#这里稍微等一下发送的消息返回,否则会看到输入>>>标识的错位 21 22def read_msg(tcp_client_socket): 23 while 1: 24 resv_data = tcp_client_socket.recv(1024) 25 print("the get of message is:",resv_data.decode("utf-8")) 26 27if __name__ == '__main__': 28 print("the TCP client is running ...") 29 tcp_client()
client console output内容如下
1the TCP client is running ... 2>>>good good study 3the get of message is: good good study 4>>>day day up 5the get of message is: day day up 6>>>
欢迎关注【无量测试之道】公众号,回复【领取资源】,
Python编程学习资源干货、
Python+Appium框架APP的UI自动化、
Python+Selenium框架Web的UI自动化、
Python+Unittest框架API自动化、
资源和代码 免费送啦~
文章下方有公众号二维码,可直接微信扫一扫关注即可。
备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:
添加关注,让我们一起共同成长!