繁体   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