我正在尝试编写一个python聊天程序,可以同时发送和接收。请帮我弄清楚。你知道吗
这是我的密码:
def button_click():
q,addr=s.accept()
a = E2.get()
w.insert(END, "\nYour message" + a)
q.send(a)
E2.delete(0,END)
looprec()
def looprec():
while 1:
msg = q.recv(1024)
if not msg:
print ''
else:
w.insert(END,"\n Client reply:" + msg)
s.close()
问题中包含的代码根本无法运行。所以我要给你两个解决问题的方法。你知道吗
1. You can use threads!
线程同时运行。与主流程同时进行。他们也有相同的记忆。因此,可以使用在Python脚本头部定义的列表来收集传入的套接字连接,然后在需要广播/写入它们时进行迭代。你知道吗
2. You can use non blocking (sometimes called asynchronous) IO!
非阻塞IO使用底层操作系统的功能。在Linux上,这是由epoll system call提供的,您可以通过select在Python中访问它。epoll允许您在socket准备好从中读取内容时收到通知。同时让你的主要进程继续做其他事情。你知道吗
任何一种方法都会奏效。非阻塞IO通常是最有效和最容易推理的。你知道吗
相关问题 更多 >
编程相关推荐