聊天中的 Python 客户端

2024-01-10

我在尝试构建聊天客户端时遇到问题。我刚刚开始,这是我的代码:

import socket
my_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
my_socket.connect(("10.10.10.69",1234))
while True:
    message=raw_input("your message: ")
    if(message=="quit"):
        my_socket.close()
        break
    my_socket.send(message)
    data=my_socket.recv(1024)
    print "message from server:" , data

问题是raw_input。当用户发送消息时,其他用户会堆积在raw_input因此,只有当他们也发送消息时,他们才会收到新消息。

我该如何修复它(不使用线程)?


正如我评论的那样,使用select.select http://docs.python.org/2/library/select.html#select.select如果您的聊天客户端在 Unix 上运行。

例如:

import socket
import sys
import select

my_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
my_socket.connect(("10.10.10.69",1234))
sys.stdout.write('your message: ')
sys.stdout.flush()
while True:
    r, w, x = select.select([sys.stdin, my_socket], [], [])
    if not r:
        continue
    if r[0] is sys.stdin:
        message = raw_input()
        if message == "quit":
            my_socket.close()
            break
        my_socket.send(message)
        sys.stdout.write('your message: ')
        sys.stdout.flush()
    else:
        data = my_socket.recv(1024)
        print "message from server:" , data
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

聊天中的 Python 客户端 的相关文章

随机推荐