python输入时设置等待时间_等待输入时进行Python打印

def receivedata(self):

while True:

data = self.soc.recv(1024)

if data != "" or data != '' or data != "":

sys.stdout.write("Recv>> ")

sys.stdout.write(data)

sys.stdout.flush()

if data == "Server Shutdown":

self.soc.close()

elif not data:

continue

def senddata(self):

while True:

try:

sys.stdout.write("Send>> ")

msg = sys.stdin.readline()

self.soc.send(msg)

except socket.error:

sys.stdout.write("Socket Connection Timed Out")

This is part of my client code of python, and what I expect from this is while this waits for user input, it prints what it receives from server.

However, client does not print anything when it is waiting for user input -- it only prints when something has been entered by user.

Is there a way that I could change this so that it prints even when it is waiting for user input?

解决方案

If your program needs to wait on 2 separate events (user input and incoming socket data), you'll have to use threads, something like:

recv_thread = threading.Thread(target=receivedata)

recv_thread.setDaemon(True)

recv_thread.start()

senddata()

Couple of things about the code:

when socket.error is encountered it can be something other than timeout.

at one point you will need to exit the while loop from senddata (when the user input a certain text? or) in case of exception.

also add exception handling in receivedata

if statement in receivedata is not OK. you could replace it to:

if data:

...if statements...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值