Python 如何使用套接字发送和接收整个文本消息(而不仅仅是一部分)
我正在尝试使用Python 如何使用套接字发送和接收整个文本消息(而不仅仅是一部分),python,sockets,tcp,recv,Python,Sockets,Tcp,Recv,我正在尝试使用SocketServer创建一个非常简单的(行)服务器。我对are完全陌生,问题是,我不知道如何处理recv函数。我不想发送文件之类的东西。只需从客户端写入文本,并从服务器得到可能更大的响应(ipconfig等的输出) 你能给我一个建议怎么做吗 当我想从服务器请求更长的时间时,例如ipconfig/all,它会将所需输出的一小部分返回给我的客户端并等待。如果作为客户机执行新请求,它将返回上一个请求的其余输出 这是服务器: class ThreadedTCPServer(Socket
SocketServer
创建一个非常简单的(行)服务器。我对are完全陌生,问题是,我不知道如何处理recv
函数。我不想发送文件之类的东西。只需从客户端写入文本,并从服务器得到可能更大的响应(ipconfig等的输出)
你能给我一个建议怎么做吗
当我想从服务器请求更长的时间时,例如ipconfig/all
,它会将所需输出的一小部分返回给我的客户端并等待。如果作为客户机执行新请求,它将返回上一个请求的其余输出
这是服务器:
class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
daemon_threads = True
class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
def handle(self):
while 1:
data = self.request.recv(1024)
output = process_command(data)
response = "{}".format(output)
self.request.sendall(response)
if __name__ == "__main__":
HOST, PORT = _host, int(_port)
server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
print "Running on: %s:%s" % (HOST, PORT)
server.serve_forever()
行中:
data = self.request.recv(1024)
1024是数据字符串可以包含的位数的限制器,因此1024位==128字节==128字符串。将数字增加到4096,则限制将增加到512 有几个问题
是一个低级函数,您可能会在需要连接在一起的几个块中接收TCP客户端的输入。如果您的“协议”是面向行的,请使用recv
创建一个类似文件的对象,然后您可以使用makefile
读取整行内容readline
- 问题可能出在
进程\u命令中,请显示您的代码
- 您的循环不处理EOF(客户端关闭)
recv
参数不是位。