#2
东海ECS2023-04-23 20:11
|
程序代码:
'''
基于threading多线程并发TCP套接字
'''
# 导入模块
from socket import *
from threading import Thread
import os,sys
# 全局变量,地址和端口
ADDR = ('0.0.0.0',8888)
# 创建套接字
s = socket()
# 设置端口立刻重用
s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
# 绑定地址端口
s.bind(ADDR)
# 开始监听
s.listen()
print('Listen the port 8888...')
# 接收并处理消息线程
def handle(c):
while True:
try: # 处理遇到的客户端意外断开的异常
data = c.recv(1024)
if not data:
break
print(data.decode())
c.send(b'OK')
except:
break
c.close()
# 主线程开始
while True:
try: # 处理遇到的异常
c,addr = s.accept()
print('Connect from',addr)
except KeyboardInterrupt:
sys.exit('退出服务器')
except Exception as e:
print(e)
continue
# 创建线程并发处理每一个收到的消息
t = Thread(target=handle,args=(c,))
t.setDaemon(True) # 线程回收处理
t.start() # 开始线程