作为一个学校项目,我正在尝试开发一个套接字服务器,我将用它来在Android应用程序和覆盆子pi之间进行通信。由于我是python的新手,我决定创建一个基于this tutorial的简单服务器 - 客户端服务器。当我在同一台计算机上同时尝试(服务器和客户端)应用程序时它工作正常,输出如下图所示:
当我使用我的Ubuntu机器并在SAME机器上运行这两个应用程序时,情况也一样。
但是,当我将其中一个应用程序切换到其他操作系统(我的意思是主机:Windows,客户端:Ubuntu或者相反)时,服务器只能接收第一个参数。
我不明白代码有什么问题。这是我的server.py和client.py
SERVER.PY
import socket
import sys
HOST = '192.168.1.25'
PORT = 8888
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("socket created")
try:
s.bind((HOST, PORT))
except socket.error as err:
print("Bind Failed, Error Code: " + str(err[0]) + ", Message: " + err[1])
sys.exit()
print("Socket Bind Success!")
s.listen(10)
print("Socket is now listening")
while 1:
conn, addr = s.accept()
print("Connect with " + addr[0] + ":" + str(addr[1]))
buf = conn.recv(64).decode()
print("Received: " + buf)
s.close()
CLIENT.PY
import socket
import sys
HOST = '192.168.1.25'
PORT = 8888
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST,PORT))
if not sys.argv[1:]:
args = "no args"
else:
for args in sys.argv[1:]:
message = args + ' '
s.sendto(message.encode(),(HOST,PORT))
print("Done.")
感谢任何帮助。谢谢。