Python套接字服务器无法检索不同操作系统上的参数

时间:2018-03-18 11:19:11

标签: python windows sockets ubuntu

作为一个学校项目,我正在尝试开发一个套接字服务器,我将用它来在Android应用程序和覆盆子pi之间进行通信。由于我是python的新手,我决定创建一个基于this tutorial的简单服务器 - 客户端服务器。当我在同一台计算机上同时尝试(服务器和客户端)应用程序时它工作正常,输出如下图所示:

windows test

当我使用我的Ubuntu机器并在SAME机器上运行这两个应用程序时,情况也一样。

但是,当我将其中一个应用程序切换到其他操作系统(我的意思是主机:Windows,客户端:Ubuntu或者相反)时,服务器只能接收第一个参数。

ubuntu test

我不明白代码有什么问题。这是我的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.")

感谢任何帮助。谢谢。

0 个答案:

没有答案