客户端和服务器可以成功连接,但是只能发出一个命令。在这方面已经有一段时间了,需要一些外部帮助,任何反馈或建议的改进都将是非常感谢提前。在
我一直在看其他帖子,这些帖子暗示我可能已经过早地关闭了连接,但我不相信这是真的,因为程序没有抛出任何断开错误,尽管我可能是错的。在
客户端.py
import socket
import sys
import os
# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
##server = input("Enter server IP: ")
##print(server)
##
##port = int(input("Enter port: "))
##print(port)
def send_msg(msg):
sock.sendall(msg.encode())
def get_msg():
msg = sock.recv(2048).decode()
return msg
server = "127.0.0.1"
port = 100
sock.connect((server, port))
print("Connecting to " + server + " on port " + str(port) + "\n")
while True:
#Send data
msg = input(os.getcwd() + "> ")
print("Sending '" + msg + "'")
send_msg(msg)
#Response
#amnt_exp = len(msg)
#data = sock.recv(2048)
data = get_msg()
if data == "exit":
print("\nClosing connection")
sock.close()
else:
print("Received: \n" + data)
服务器.py
^{pr2}$
问题是您的服务器循环只接受一个命令,然后它返回到
accept
一个全新的连接,而不再查看旧的连接。在您的输出很容易引起误解,因为它确实打印出
Waiting for a command...
。但这只是因为在send_msg
之前有一个额外的print("\nWaiting for a command...")
,而在sock.accept
之前没有任何输出。如果你的指纹准确,你就能看到实际发生了什么。例如:那么,现在你知道出了什么问题了,你怎么解决它?在
简单。我们只需要一个嵌套循环。一旦您
^{pr2}$accept
一个客户端连接,请继续使用该连接,直到它们退出:相关问题 更多 >
编程相关推荐