SocketServerTCP学习问题解决
程序员文章站
2024-02-09 16:41:28
...
使用py38入坑,出坑
编写SocketServerTCP服务器和客户端,发现客户端只能发送不能回收消息
发现问题:可以发送不报错,但是发完就卡住,不能回收消息。问题所在点为服务器端
服务器端代码如:self.wfile.write(self.rfile.readline()) 这一条正是发送的代码,因为使用的是readline所以需要在客户端加一个换行符
客户端代码发送消息时需要添加一个换行符:tcpClient.send((data+"\n").encode("utf-8"))方可实现回收消息
问题解决 补充:从服务器发送消息回收到消息会有一个\\n解决方法在服务器发送消息时写一个.strip()方法去除换行符即可
案例如下
# coding=utf-8
# 服务器代码
from socketserver import TCPServer as TCP, StreamRequestHandler as SRH
from time import ctime
class MyRequestHandler(SRH):
def handle(self):
print("来自:", self.client_address)
self.wfile.write("[{}]{}".format(ctime(), self.rfile.readline()).encode("utf-8"))
tcpServ = TCP(("", 9000), MyRequestHandler)
print("等待连接")
tcpServ.serve_forever()
# coding=utf-8
# 客户端代码
from socket import *
while True:
tcpClient = socket(AF_INET, SOCK_STREAM)
tcpClient.connect(("localhost", 9000))
data = input(">")
if not data:
break
tcpClient.send((data+"\n").encode("utf-8"))
data = tcpClient.recv(1024)
if not data:
break
print(data)
tcpClient.close()
上一篇: 设计模式之策略模式
下一篇: Tomcat(web服务器软件)