我编写了以下函数,用于我用于测试的一组套接字实用程序中。(如果这很重要,请使用 Python 2.7.3。)我将库拉入其中的主要原因select
是我可以实现超时,而不是永远等待响应。我发现的问题是响应在 2048 个字符处被截断,尽管使用 64K 作为.recv()
套接字上方法的最大大小。在我参与之前,这种截断并没有发生select
。当我将最大尺寸设置得更高时,它很高兴地通过了 64K 甚至更多。
我浏览了一些在线资源,select
并找到了有关接收数据大小的明显上限的任何信息。即没有它存在的信息,更不用说如何修改它了。谁能指出我克服这个 2K 限制的方法?
导入套接字,选择 最大尺寸 = 65535 超时 = 10 def 瞬态连接(主机、端口、发送数据): 错误,响应=假,'' 尝试: sendSocket = socket.socket() sendSocket.connect((主机,端口)) sendSocket.send(sendData) gotData = select.select([sendSocket],[],[],TIMEOUT) 如果(得到数据 [0]): 响应 = sendSocket.recv(MAXSIZE) 别的: 错误=真 response = '*** TIMEOUT ***\n主机没有响应。' sendSocket.close() 除了异常,errText: 错误,响应 = True,'*** SOCKET 错误 ***\n'+str(errText) 返回(错误,响应)