我在python中使用TCP服务器,它实现了这个类:
class ThreadedTCPServer(SocketServer.ThreadingTCPServer):
pass
它的正常使用非常完美(启动服务器,处理请求等)。
现在 - 我需要在handle
类的TcpRequestHandler(SocketServer.BaseRequestHandler)
函数之外向客户端发送消息。
我尝试使用以下技巧,使用服务器的内部套接字(适用于UDP) -
tcp_server.client_socket.send(message)
但我收到此错误消息 -
socket.error: [Errno 10057] A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied
所以我认为TCP是不可能的。
还有其他办法吗? 我假设有些服务器有时需要向客户端发送消息(这不仅仅是对请求的响应),但我找不到好方法。
谢谢!
答案 0 :(得分:3)
TCP有两个常规选项:
如果这听起来像你感兴趣的东西我可以稍后写一些示例代码。
有优点&两种方法之间的缺点:
在(1)中,您需要管理更多套接字连接,并将客户端主机公开给您可能不需要的连接。协议更简单,因为它们不是多路复用的。
在(2)中,您只有一个TCP流,但您必须多路复用您的OOB消息。如果客户端不定期联系服务器,您的延迟也会增加。
希望有所帮助。