python 基于tcp网络通信的多线程并发模型

服务端

from socket import *
from threading import Thread
import sys

#全局变量
HOST = '127.0.0.1'
PORT = 8888
ADDR = (HOST,PORT)

#具体和客户端进行交互的函数
def handle(c):
	while True:
		data = c.recv(1024)
		if not data:
			break
		print(data.decode())
		c.send(b'OK')
	c.close()

#创建套接字
s = socket()
s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
s.bind(ADDR)
s.listen(5)

print('Listen the port 8888....')
while True:
	#循环等待客户端连接
	try:
		c,addr  = s.accept()
		print('Connect from',addr)
	except KeyboardInterrupt as e:
		sys.exit('服务器退出')
	except Exception as e:
		print(e)
		continue
	
	#客户端连接后,创建分支线程去运行handle(),主线程继续去接受客户端连接
	t = Thread(target=handle,args=(c,))	#这个连接套接字c一定要传,因为线程间是共享整个进程的资源的
	t.setDaemon(True)	#设置当主线程退出时分支线程也随之退出(主线程退出意味着服务器崩了)
	t.start()	

客户端

from socket import *

#创建tcp套接字
sockfd = socket() #默认值

#连接服务器
server_addr = ('127.0.0.1',8888) #服务器地址
sockfd.connect(server_addr)

#发收消息
while True:
	msg  = input('Msg:')
	if not msg:
		break
	sockfd.send(msg.encode()) #字节串
	data = sockfd.recv(1024)	
	print('From server:',data.decode())

你可能感兴趣的:(tcp,多线程,#python,python,多线程,tcp)