0

我在服务器上使用此命令从客户端向服务器发送一些消息“你好”

    #Send some data to remote server
    message = 'hello'

    try :

    s.send(message)
    print 'data sent successfully'
    except socket.error:
    #Send failed
    print 'Send failed'

现在在服务器端,我想检查此消息是否作为在服务器端创建的字典中的键存在。

    msg=c.recvfrom(1024)

     if msg in data2.keys():
 print("key for this msg exists", msg)
     else:
     print("no such key exists",msg)

现在,问题是它总是说没有这样的密钥出口。当我在服务器端打印从客户端获得的味精时,结果是:

   ('hello', None)

我不明白为什么它会给出 None 和你好。

因此,我什至没有在字典中找到匹配项。请告诉我我在哪里做错了。

4

2 回答 2

2

正如套接字的文档所述:返回值是一对(字符串,地址),其中字符串是表示接收到的数据的字符串,地址是发送数据的套接字的地址。

所以你('hello', None)是这对,如果你想从中选择消息字符串在你的字典中搜索它,你必须使用msg[0].

于 2013-06-23T00:34:20.180 回答
1

如果您查看文档socket.recvfrom()您会看到它返回一个元组。如果您只想要数据部分,最好只调用socket.recv().

于 2013-06-23T00:34:51.480 回答