为了账号安全,请及时绑定邮箱和手机立即绑定

如何等到使用 Python 套接字接收数据?

如何等到使用 Python 套接字接收数据?

一只斗牛犬 2021-08-17 09:57:10
我正在创建一个套接字客户端并尝试获取一些数据。为此,我需要通过套接字连接到 Web 服务器,服务器实际上创建了另一个套接字,该套接字侦听并等待数据发送回客户端。我在下面的代码中遇到的问题是我的套接字客户端不等待来自服务器的传入数据而只接受空数据。如何使用 Python 套接字等待来自服务器的非空数据?我的代码:import sysimport jsonimport socketIO_clientimport timehost = 'https://SOME_URL'socketIO = socketIO_client.SocketIO(host, params={"email" : "edmund@gmail.com"})def on_connect(*args):    print "socket.io connected"def on_disconnect(*args):    print "socketIO diconnected"socketIO.on('connect', on_connect)socketIO.on('disconnect', on_disconnect)def on_response_state(*args):    print args # Prints ()socketIO.emit('receive_state',on_response_state)socketIO.wait_for_callbacks(seconds=3)
查看完整描述

3 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

将接收套接字放在一个 while 线程中。


像这样:


  def rec(self):


    while 1:

        sleep 0.01

        rdata = self.clientsocket.recv(self.buffsize)


        print("rec from server: ", rdata.decode('utf8'),'\n','press enter to continue')

....


t2 = threading.Thread(target=y.rec, name="rec") 


t2.start()


查看完整回答
反对 回复 2021-08-17
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

由于您使用该SocketIO库来包含参数(使用requests实现),并且想要发出消息,因此您可以通过不指定等待时间来无限期地等待响应。


with SocketIO(host, params={"email" : "edmund@gmail.com"}) as socketIO:

    def on_response_state(*args):

        print args # Prints ()


    socketIO.emit('receive_state', on_response_state)

    socketIO.wait()


查看完整回答
反对 回复 2021-08-17
  • 3 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号