我的Python套接字服务器只能从客户端接收一条消息

时间:2015-06-28 18:17:27

标签: python sockets python-3.x

您好我的套接字服务器或客户端问题是我只能从客户端向服务器发送一条消息然后服务器停止接收由于某种原因我希望它接收多一个。

Server.py

import socket 

host = ''
port = 1010

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind((host, port)) 
s.listen(1) 
conn, addr = s.accept() 
print ("Connection from", addr)
while True: 
    databytes = conn.recv(1024)
    if not databytes:
        break
    data = databytes.decode('utf-8')
    print("Recieved: "+(data))
    if data == "dodo":  
        print("hejhej")
    if data == "did":
        response = ("Command recived") 
        conn.sendall(response.encode('utf-8'))
conn.close()

client.py

import socket 

host = '127.0.0.1'
port = 1010 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((host, port)) 
print("Connected to "+(host)+" on port "+str(port)) 
initialMessage = input("Send: ") 
s.sendall(initialMessage.encode('utf-8'))

while True:
    response = input("Send: ") 
    if response == "exit": 
        s.sendall(response.encode('utf-8')) 
s.close()

1 个答案:

答案 0 :(得分:2)

您的代码没有任何问题,但它的LOGIC是错误的, 在Client.py文件中,特别是在此循环中:

while True:
    response = input("Send: ") 
    if response == "exit": 
        s.sendall(response.encode('utf-8')) 

由于这个原因,我们不会向Server方发送任何字符串exit

if response == "exit":

因此,您要求Client.py脚本仅发送与字符串exit匹配的用户输入的任何内容,否则将不会发送。

自从您写完以来,它将在此while循环之前的开头发送任何内容:

initialMessage = input("Send: ") 
s.sendall(initialMessage.encode('utf-8'))

但是当您进入while循环后,您锁定s.sendall只发送exit字符串

您必须清理代码逻辑。