如何修复能够同时发送和接收的python聊天程序?

2024-04-25 19:48:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个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()

Tags: 程序密码messagegetdefbuttonmsgend
1条回答
网友
1楼 · 发布于 2024-04-25 19:48:55

问题中包含的代码根本无法运行。所以我要给你两个解决问题的方法。你知道吗

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通常是最有效和最容易推理的。你知道吗

相关问题 更多 >