您好我的套接字服务器或客户端问题是我只能从客户端向服务器发送一条消息然后服务器停止接收由于某种原因我希望它接收多一个。
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()
答案 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
字符串
您必须清理代码逻辑。