我又来了, 又是关于 socket 的
資深大佬 : 18870715400 13
附上代码:
server 端
from socketserver import BaseRequestHandler, ThreadingTCPServer class Handler(BaseRequestHandler): def setup(self) -> None: self.request.settimeout(1) def handle(self): while 1: try: data = "这是主机端的信息" self.request.sendall(data.encode("utf-8")) except BaseException as e: print(e) print("关闭连接:{}".format(self.client_address[0])) break if __name__ == '__main__': host = ("localhost", 8000) server = ThreadingTCPServer(host, Handler) server.serve_forever()
client 端
import socket import time client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = ("localhost", 8000) client.connect(host) while 1: data = client.recv(2000) if len(data) <= 0: break print("从主机端接受信息:{}".format(data.decode())) # time.sleep(1)
运行 client 的时候有的时候会报错,‘utf-8’ codec can’t decode bytes in position
但是如果在 server 端 self.request.sendall 发送英文的时候就不会报错, 个人估计是因为编码后的中文传输的时候 client 端接收的数据不够完整, 比如一个 编译后的 字节数据是 xe5x93x88 但是接收的时候只有接收到 xe5x9 导致 client 端解析的时候出错了, 大家有什么方法保证数据的完整性么
大佬有話說 (15)