首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查TCP数据可用性?

如何检查TCP数据可用性?
EN

Stack Overflow用户
提问于 2018-06-01 11:19:01
回答 1查看 0关注 0票数 0

我的目标是每隔几秒检查一次tcp端口,并验证数据是否进入。如果数据进入,则将“OK”消息发送到另一个端口。如果没有消息“失败”将被发送到该端口。试图使用该功能recv()。这个函数的问题是,它等到服务器发送的所有数据都完成为止。数据的大小从第二个变化到另一个。当数据不可用时,这将导致非常大的延迟。此外如果服务器已停止流式传输数据,则只会在此情况下发送“失败”消息,但如果流式传输为空数据,则不会发送此消息。如何解决这些问题?

我的代码:

代码语言:javascript
复制
import socket
import time
s= socket.socket()
host = '127.0.0.1' 
port = 24039
s.connect((host, port))


import socket
TCP_IP = "127.0.0.1"
TCP_PORT = 24040
sock = socket.socket(socket.AF_INET, 
             socket.SOCK_STREAM) 
sock.bind((TCP_IP, TCP_PORT)) 
sock.listen(1)
clients = []

conn, addr = sock.accept()

clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect((TCP_IP, TCP_PORT))


while True:
    data = s.recv(30)
    if not data:
        conn.send(bytes("Failed", "utf-8"))
        print ("Failed:")
        time.sleep(2)
    else:
        conn.send(bytes("OK", "utf-8"))
        print ("OK")
        time.sleep(2)
EN

回答 1

Stack Overflow用户

发布于 2018-06-01 20:35:44

可以使用SELECT

代码语言:txt
复制
 import select

 ......
 inputs = [ socket1 ]
 outputs = [ ]

  while not shutdown:
       readable, writable, exceptional = select.select(inputs, outputs, inputs)
       for sk in readable:

        if sk is socket1:
             # recv ... and further processing
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100004714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档