还有一个套接字编程问题

我现在正在尝试SocketServer课程.最初是我
suplasseprassrasshandler制作了我自己的自定义处理程序,但是
结果似乎是客户插座在它具有后关闭
被使用,而不是保持开放.
就像测试一样,我决定使用baserequesthandler,因为我
知道其方法未实施.所以这就是我所拥有的:
-------
导入SocketServer
主机=''
端口= 51234
地址=(主机,端口)
buffer_size = 1024
类MyrequestHandler(socketserver.baserequesthandler):
def句柄(self):
打印'...来自:',self.client_address
data = self.request.recv(buffer_size)
self.request.send('%s%s'%('您键入:',data))
socket_server = socketserver.tcpserver(地址,myrequesthandler)
打印"等待连接..."
socket_server.serve_forever()
-------
-------
从插座导入 *
主机='localhost'
端口= 51234
地址=(主机,端口)
buffer_size = 1024
client_socket =套接字(af_inet,sock_stream)
client_socket.connect(地址)
而真:
data = raw_input('')
如果没有数据:
休息
client_socket.send(数据)
data = client_socket.recv(buffer_size)
打印数据
client_socket.close()
-------
但这似乎只能起作用,然后随后尝试
什么也没返回,然后客户程序似乎崩溃了(或只是
自行关闭).
这里发生了什么事?

# 回答1


John Salerno 正确的. "句柄"不是一次要求一个请求,它被要求
一次连接.如果您需要连接持久,那么
您的hander()函数需要坐在循环中进行recv调用,直到您
检测对话完成.
- -
蒂姆·罗伯茨(Tim Roberts),ti@probo.com
Providenza&Boekelheide,Inc.
# 回答2


"蒂姆·罗伯茨" 新闻:SJ *******************************************************************
正确的. "句柄"不是一次要求一个请求,它被要求
一次连接.如果您需要连接持久,那么
您的hander()函数需要坐在循环中进行recv调用,直到您
检测对话完成.
啊,所以我需要重写我的手柄方法.我在想
来自StreamRequestHandler的专门设置()和/或饰面()调用是
一次使用后连接关闭的原因(这就是我尝试的原因
取而代之的是BaseRequestHandler).
谢谢.

标签: python

添加新评论