python socket (非阻塞、重启端口立即释放)通信

it2022-05-05  172

client端

#!/usr/bin/env python #coding:utf-8 import socket #socket.setdefaulttimeout(0.5) #链接服务端ip和端口 ip_port = ('127.0.0.1',9999) #生成一个句柄 sk = socket.socket() try: #请求连接服务端 sk.connect(ip_port) #发送数据 sk.sendall(bytes('end','utf8')) #接受数据 server_reply = sk.recv(1024) #打印接受的数据 server_reply = str(server_reply,'utf8') #关闭连接 sk.close() except: server_reply = '0' print (server_reply)

server端

#!/usr/bin/env python #coding:utf-8 import socket #socket.setdefaulttimeout(0.5) #开启ip和端口 ip_port = ('127.0.0.1',9999) #生成一个句柄 sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #立即释放端口 sk.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) #非阻塞 sk.setblocking(False) #绑定ip端口 sk.bind(ip_port) #最多连接数 sk.listen(5) #开启死循环 while True: print ('server running...') #等待链接,阻塞,直到渠道链接 conn打开一个新的对象 专门给当前链接的客户端 addr是ip地址 try: conn,addr = sk.accept() #获取客户端请求数据 client_data = conn.recv(1024) #打印对方的数据 print (str(client_data,'utf8')) #向对方发送数据 conn.sendall(bytes('1','utf8')) #关闭链接 conn.close() if (str(client_data,'utf8')) == 'end': #可根据需求编写 break except BlockingIOError: pass

 


最新回复(0)