2015-02-08 3 views
2

Я получаю эту ошибку:Ошибка: 'Сокет не подключен' при выполнении: 'socket.recv (1024)'

Traceback (most recent call last): 
    File "./server.py", line 12, in <module> 
    data = connexion.recv(1024) 
socket.error: [Errno 57] Socket is not connected 

server.py:

#!/usr/bin/python2.7 
import socket 

connexion = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
connexion.bind(('', 12800)) 
connexion.listen(5) 

client, info = connexion.accept() 

continuer = "" 
while(continuer.upper() != "Q"): 
    data = connexion.recv(1024) #I get the error here 
    continuer = raw_input("") 
else: 
    connexion.close() 

Может кто-нибудь сказать мне, что проблема с моим кодом, пожалуйста?

ответ

3

Вы получаете от гнезда Connexion, вместо сокета клиента.

Каждый клиентский сокет связан с другим соединением. Но серверный сокет (соединение здесь) принимает клиентский сокет, он не отправляет/не отправляет.

Быстрое исправление в ваш код будет:

continuer = "" 
while(continuer.upper() != "Q"): 
    data = client.recv(1024) 
    continuer = raw_input("") 
else: 
    client.close() 

Кроме того, я не уверен, что еще будет делать что-то. Вы должны удалить его, как только вы достигнете своего состояния, ваш клиентский сокет будет закрыт в любом случае.

@Jeremy Friesner: Быстрее меня. Но я отправляю ответ в любом случае, так как это больше завершено.

3
data = connexion.recv(1024) #I get the error here 

должен быть

data = client.recv(1024)