【问题标题】:chat program - send doesn't work聊天程序 - 发送不起作用
【发布时间】:2014-01-31 07:01:57
【问题描述】:

我做了一个聊天程序(此时只有主机可以发送消息):

服务器:

# server
import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

host = 'localhost'
port = 150

server.bind((host, port))

print 'Server is open\nWaiting connections...'

server.listen(1)

while True:
    client, addr = server.accept()
    print 'Connected by', addr
    while True:

这是问题:当我输入消息并发送它们时,客户端只能看到带有偶数的消息。为什么会这样?

        msg = raw_input('>>>')
        if msg == 'exit':
            client.send(msg)
            break
        else:
            client.send('<Host>' + msg)
client.close()

客户:

# client
import socket
import time

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

host = 'localhost'
port = 150

client.connect((host,port))

while True:
    if client.recv(1024) == 'exit':
        print '<System>Host disconnected the Server...'
        print '<System>Program will shoot down in 5 seconds'
        time.sleep(5)
        break
    else:
        print client.recv(1024)
client.close()

【问题讨论】:

  • “只看到偶数的邮件”是什么意思?我没有看到任何参与发送/接收消息的数字。此外,这似乎不是一个非常“好的”编写的服务器/客户端系统。如果您还没有这样做,我建议您通过阅读 Beej 的网络编程指南来阅读该主题。
  • 所以如果我发送第一条消息,客户端什么都看不到,当我发送第二条消息时客户端看到它,当我发送第三条消息时,客户端看不到它等等...谢谢阅读推荐,不是很好写,因为我刚开始接触网络。

标签: python send


【解决方案1】:

请注意,您在客户端收到消息两次:首先,您收到一条消息并检查它是否是“退出”消息,然后收到第二条消息并打印。因此,在if 条件下,只打印偶数消息,而奇数消息用完。

尝试将客户端代码更改为:

while True:
    msg = client.recv(1024)
    if msg == 'exit':
        print '<System>Host disconnected the Server...'
        print '<System>Program will shut down in 5 seconds'
        time.sleep(5)
        break
    else:
        print msg

【讨论】:

  • 不错的收获。我没看到那个。如果我做出这样的事情,我自己可能会犯这个错误。
猜你喜欢
  • 1970-01-01
  • 2016-08-24
  • 2019-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多