2013-06-23 4 views
0

Я посылаю какое-то сообщение «привет» от клиента к серверу, используя эту команду на сервереPython: Пошлите функцию программирования сокетов

#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) 

В настоящее время проблема заключается в том, что он всегда говорит, что таких ключей не выходит. Когда я распечатать Сообщ на стороне сервера, который я получил от client.It выходит быть:

('hello', None) 

Я не понимаю, почему он не дает None вместе с приветом.

из-за этого я даже не получаю соответствие в словаре. Пожалуйста, скажите мне, где я делаю неправильно.

ответ

1

Если вы посмотрите на documentation на номер socket.recvfrom(), вы увидите, что он возвращает кортеж. Если вам нужна только часть данных, вам лучше позвонить только socket.recv().

2

В качестве документации для состояний сокетов: Возвращаемое значение представляет собой пару (строка, адрес), где строка представляет собой строку, представляющую полученные данные, а адрес - адрес сокета, отправляющего данные.

Это ваша пара ('hello', None), и если вы хотите выбрать строку сообщения для ее поиска в своем dict, вы должны использовать msg[0].