2

私の目的は、クライアントがデータをサーバーに送信するたびに、サーバーがそれを表示することです。ただし、現在、クライアントがデータを送信すると、サーバーはデータをキャプチャして初めて表示します。問題の原因は何ですか? ところで、ネットワーク プログラミングを行うのはこれが初めてなので、回答をシンプルにしてください。

サーバースクリプト

import socket

server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server_socket.bine(("",5001))
server_socket.listen(5)

print "TCP Server Waiting for incoming client connection on port 5001..."

while True:
    client_socket, address =server_socket.accept()
    print "Connection from ", address
    data = client_socket.recv(512)
    print "RECIEVED:" , data

クライアント スクリプト

import socket

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('169.254.0.1', 5001))
data=''
while data!='quit':
        data = raw_input ( "SEND :" )
        client_socket.send(data)
4

2 に答える 2

2

サーバーコードは一度だけ受信し、その後別のクライアントを受け入れます。クライアントが切断されるまでループする必要があります。(切断時はrecv()空の文字列を返す)

while True:
    client_socket, address = server_socket.accept()
    print "Connection from ", address
    while 1:
        data = client_socket.recv(512)
        if not data:
            break
        print "RECIEVED:" , data

ところで、あなたのサーバー コード (および私のコード) は、一度に 1 つのクライアントしか処理しません。

于 2013-08-21T09:25:43.570 に答える
1
while True:
    client_socket, address =server_socket.accept()
    print "Connection from ", address
    data = client_socket.recv(512)
    print "RECIEVED:" , data

これは次のようになります。

client_socket, address =server_socket.accept()
print "Connection from ", address
while True:
    data = client_socket.recv(512)
    print "RECIEVED:" , data

server_socket.accept()新しいクライアントが接続されるまで無期限に待機します。実際、あなたのループは次のようなものです:「クライアントを受け入れ、彼が送信したデータを1回受信します」。

于 2013-08-21T09:25:28.873 に答える