gpt4 book ai didi

python - 等待输入时如何打印?

转载 作者:太空宇宙 更新时间:2023-11-03 17:42:51 25 4
gpt4 key购买 nike

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")

这是我的 python 客户端代码的一部分,我期望的是在等待用户输入时,它会打印从服务器接收到的内容。

但是,客户端在等待用户输入时不会打印任何内容 - 它仅在用户输入内容时才打印。

有没有办法可以更改它,以便即使在等待用户输入时也可以打印?

最佳答案

如果您的程序需要等待 2 个单独的事件(用户输入和传入套接字数据),则必须使用线程,例如:

recv_thread = threading.Thread(target=receivedata)
recv_thread.setDaemon(True)
recv_thread.start()
senddata()

关于代码的一些事情:

  • 当遇到 socket.error 时,可能是超时以外的原因。
  • 在某一时刻,您需要从 senddata 退出 while 循环(当用户输入特定文本时?或)以防出现异常。
  • 还在接收数据中添加异常处理
  • if receivedata 语句不正确。您可以将其替换为:

    if data:
    ...if statements...

关于python - 等待输入时如何打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30252112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com