2016-04-13 8 views
-1

ノンブロッキングソケットコードを記述しようとしています。これまでのところ私はこれを試してみた:非ブロック型ソケットプログラミング(Pythonで)

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) 

server.pyはまた、私はこのエラーを取得する:socket.error: [Errno 11] Resource temporarily unavailable

どんなに何にか、しかし、多くの回私はポート番号を変更します。

ありがとうございます!

+0

「s.setblocking(0)」 – stark

+0

ああ申し訳ありませんが、これは誤字です – Anusha

答えて

1

サーバーをノンブロッキングに設定しました。したがって、acceptはエラーで直ちに戻ります。サーバーをブロッキングに設定するか、selectを使用して複数のソケットでイベントを待機させてください。