open_sockets = []
listening_socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
listening_socket.bind( ("", 1234) )
listening_socket.listen(5)
while True:
rlist, wlist, xlist = select.select( [listening_socket] + open_sockets, [], [] )
for i in rlist:
if i is listening_socket:
new_socket, addr = listening_socket.accept()
open_sockets.append(new_socket)
else:
data = i.recv(1024)
if data == "":
i.close()
open_sockets.remove(i)
print "Connection closed"
else:
i.send(data)
print repr(data)
これで、これが少数のクライアントを処理できる単純なサーバー コードであることがわかりました。理解できないのは、次の 2 行だけです。
data = i.recv(1024)
if data == "":
クライアントが既に受け入れている場合、他のオプション、つまりバッファーに何かがあるかどうかを確認するオプションに進むことを理解しています。バッファに何もない場合、続行して行をチェックしない理由がわかりませんでした:
if data == "":
""
ただし、クライアントがEnterキーを押すだけで、切断と同等になります
何も押されていないときと同じではないのはなぜ""
ですか?