【发布时间】:2018-02-17 02:21:55
【问题描述】:
你好,所以我正在制作一个 python 套接字服务器和客户端,我试图弄清楚如何制作它,所以当服务器使用参数向客户端发送消息时(我不善于解释自己)但基本上是我的问题是这样的
服务器控制台:
Command: >senddata 127.0.0.1 32
客户响应:
Command Accepted!
Traceback (most recent call last):
File "C:\Users\Goten\Desktop\client\client.py", line 18, in <module>
ip = sys.argv[1]
IndexError: list index out of range
我正在向 127.0.0.1 发送 32 个字节的数据(我认为),但它不起作用
这是我的客户代码:
import socket
import sys
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "127.0.0.1"
port = 8888
socket.connect((host, port))
while True:
msg = socket.recv(1024)
if ">senddata".lower() in msg:
print("Command Accepted!")
ip = sys.argv[1]
datasize = sys.argv[2]
data = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
port = 80
data.sendto(datasize, (ip, port))
print("Sent")
我真的不知道我做错了什么
【问题讨论】:
-
sys.argv 是启动应用程序时使用的命令参数列表。看起来您想要做的是从通过您的套接字发送的消息中获取 ip 和数据大小? sys.argv 不会帮你解决这个问题。
-
mateo 那我该怎么办
-
您是否希望 ip 和数据大小在 msg 中?如果是,那么您可以将味精分开。与docs.python.org/3/library/stdtypes.html#bytes.split