如何在TCP服务器中实现select()模块功能

时间:2017-11-23 17:33:47

标签: python sockets select ubuntu-16.04 tcpserver

我正在尝试使用select模块函数来实现可以处理客户端的connect system begin dbms_xdb.sethttpport('8181'); end; / Press enter ,但是我对来自

的教程感到困惑
  1. GOT THIS
  2. How does the select() function in the select module of Python exactly work?
  3. 我想知道。我的代码是否正确?如果没有,我该怎么修理它。

    服务器端

    TCP server

1 个答案:

答案 0 :(得分:1)

如果您使用select,则不应设置非阻止模式,因为每个请求都不会阻止。你没有在select中使用输出;如果你想发送一些东西,你必须检查输出是否准备就绪。

您不使用协议。 recv最多可以接收1024个字节,但您还必须处理这种情况,即每个recv只读取一个字节。所以你必须知道(通过协议)reqCommand何时完成。

使用select,您不得使用while - 循环来接收更多数据。您必须在主循环中读取块并存储它们,直到传输完成。

使用select,您不得使用for - 循环和sendall来发送数据。您必须通过select询问套接字是否已准备好输出数据并使用send并返回值以了解已发送的字节数。

您无法处理已关闭的连接。