欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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()

 

相关标签: python