Python:套接字编程的.send函数

时间:2013-06-23 00:29:31

标签: python sockets

我在服务器

上使用此命令从客户端向服务器发送一些消息'hello'
    #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)

我不明白为什么它和Hello一起给你。

因为这个我甚至没有在字典中得到匹配。请告诉我我在哪里做错了。

2 个答案:

答案 0 :(得分:2)

作为套接字状态的文档:返回值是一对(字符串,地址),其中string是表示接收数据的字符串,address是发送数据的套接字的地址。 < / p>

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

答案 1 :(得分:1)

如果查看socket.recvfrom()的{​​{3}},您会看到它返回一个元组。如果您只想要数据部分,那么最好只调用socket.recv()