Python3.7 创建TCP服务端,使用多线程同时和多个客户端通信
最近想了解一下HTTP和HTTPS相关的协议,发现对于其中的传输层了解的不够,所以干脆用Python创建一个服务端,后续如果需要用到的话,可以直接使用这些代码。在这里小小的记一下吧。
from socket import *
from time import ctime
from threading import Thread
#主要是建立TCP服务端,可以和客户端持续通信
def TCP_Server(tcpClient):
while 1:
try:
data = tcpClient.recv(4096)
except:
print('客户端{0}断开连接'.format(tcpClient.getpeername()))
break
data=data.decode('gb2312') #解码
if data=='quit':
print('客户端{0}断开连接'.format(tcpClient.getpeername()))
break
print(data)
buf = '[' + ctime() + ']' + data
tcpClient.send(buf.encode('gb2312')) #编码
tcpClient.close()
if __name__=='__main__':
tcpServer = socket(AF_INET, SOCK_STREAM) #创建TCP的套接字
local_host = ('10.110.25.20', 9051) #创建服务端的IP及端口
tcpServer.bind(local_host) #绑定IP及端口
tcpServer.listen(10) #使服务端进入监听状态,最多可连接10个客户端
while 1:
tcpClient, addr = tcpServer.accept() #接受客户端的连接,获取客户端的信息
print('客户端{0}已建立连接'.format(tcpClient.getpeername()))
#创建多线程,每接受一个客户端的连接,就建立一个线程进行处理
t = Thread(target=TCP_Server,args=(tcpClient,))
t.daemon = True
t.start()
这只是一个简单的使用,客户端直接使用的网络助手,距离实际使用肯定还有很多未考虑的地方,等以后用到了或者遇到了再写吧。
|