簡體   English   中英

Python Simple Sever和客戶端腳本(套接字編程)

[英]Python Simple Sever and Client script (Socket programming)

我的目標是每次客戶端將數據發送到服務器時,服務器都會顯示它。 但是當前,當客戶端發送數據時,服務器捕獲數據並僅在第一次顯示它。 是什么原因引起的? 順便說一句,這是我第一次進行網絡編程,因此請簡單回答。

服務器腳本

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)

您的服務器代碼僅接收一次,然后接受另一個客戶端。 您應該循環播放直到客戶端斷開連接。 (斷開連接時, 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

順便說一句,您的服務器代碼(和我的代碼)一次只處理一個客戶端。

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()將無限期等待,直到連接了新客戶端。 實際上,您的循環就像:“接受客戶端並接收他發送的數據一次”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM