Python socket处理client连接过程解析

socket只能处理一个client连接,如果需要并发处理多个链接则需要使用socketserver,下面是代码示例以及注释

server端

import socketserver

#之前的socket只能同时处理一个客户端,当需要并发处理client发送的信息是需要使用到socketserver,下面创建一个类,继承socketserver其对应实例就有并发能力

class My_Tcp_Handler(socketserver.BaseRequestHandler):

#下面的handler是自己定义的server与client交互的过程,所有交互过程都在此方法内部实现.方法名handle是固定的

def handle(self):

while True:

try:

#下面将收到的数据打印并且大写后发回给客户端

self.data = self.request.recv(1024)

print(self.data.decode(encoding="utf-8"))

self.send_data = self.data.decode(encoding="utf-8").upper().encode(encoding="utf-8")

self.request.sendall(self.send_data)

except ConnectionResetError as e:

print("一个客户端关闭了连接")

break

#实例化socketserver

My_server = socketserver.ThreadingTCPServer(("0.0.0.0", 8888), My_Tcp_Handler) #ThreadingTCPServer是使用多线程,ForkingTCPServer是使用多进程处理并发

#启动实例

My_server.serve_forever()

下面是client端

import socket

client = socket.socket()

client.connect(("127.0.0.1", 8888))

while True:

msg = input()

if len(msg) == 0:

continue

client.send(msg.encode(encoding="utf-8")) #如果发送中文需要对其进行encode,接收也需要decode;英文前面直接加b指定类型

client_rec = client.recv(1024).decode(encoding="utf-8")

print("client_rec:", client_rec)

client.close()

以上是 Python socket处理client连接过程解析 的全部内容, 来源链接: utcz.com/z/336014.html

回到顶部