0

我正在尝试实现一个 TCP 服务器,它在 recv 或 sendall 操作期间不会(可能)永远挂起。

我认为为活动套接字指定超时就足够了,但情况似乎并非如此:请参阅此处

那么,我如何扩展我的代码以确保:

  • recv 无论如何都不会挂机
  • sendall 在任何情况下都不会挂断(好吧,我不确定 sendall 是否可以挂断)

任何建议都受到高度赞赏。

4

1 回答 1

1

您需要的是select功能。它需要 3 个参数;读取列表、写入列表、错误列表。然后它返回三个值,每个值都是您输入的套接字列表,可以写入或读取。(或者如果你想检查的话,有一个错误。)

rl , wl , el = select( [ serversocket , clientsocket ] , [] , [] );
for e in rl:
  if e == serversocket:
    acceptConnection( serversocket );
  else:
    readFromClient( clientsocket );
于 2013-07-14T17:49:24.377 回答