2016-04-13 3 views
-1

Я пытаюсь написать неблокирующий код сокета. До сих пор я попытался это:программирование неблокирующих сокетов в python

server.py

import socket 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.setblocking(0) 
s.bind(('localhost',60003)) 
s.listen(1) 
#print 'Connected by', addr 
while 1: 
    conn, addr = s.accept() 
    conn.setblocking(0) 
    data = conn.recv(1024) 
    conn.sendall(data) 
print 'the normal execution of data should continue' 
print 'but when client connects, it has to echo back to the client then again continue its execution' 

client.py

import socket 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect(('localhost',60003)) 
s.sendall('Hello, world') 
data = s.recv(1024) 
#s.close() 
print 'Received', repr(data) 

Также я получаю эту ошибку: socket.error: [Errno 11] Resource temporarily unavailable

Независимо от того, к какой бы ни или сколько раза меняю номер порта.

Спасибо!

+0

Должно быть 's.setblocking (0)' – stark

+0

о, извините, это была опечатка – Anusha

ответ

1

Вы установили свой сервер в неблокирующий, поэтому accept немедленно возвращается с ошибкой. Либо установите сервер на блокировку, либо используйте select, чтобы ждать событий в нескольких сокетах.

 Смежные вопросы

  • Нет связанных вопросов^_^