所以目前我正在尝试将udp发送到具有这样的Web域的服务器
www.example.com/path?stuff=exist
我目前正在尝试使用套接字
这是我的代码的一个例子
import socket
IPADDR = '64.233.177.139'
that is the ip of google, and not the ip I am currently trying to send to
PORTNUM = 9001
PACKETDATA = '42["message","test"]'
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)
s.connect((IPADDR, PORTNUM, '/path?stuff=exist'))
s.send(PACKETDATA)`
我目前收到此错误
TypeError: getsockaddrarg() takes exactly 2 arguments (3 given)
我对使用套接字库是陌生的,做了一些挖掘都没有用。
对于更多上下文,我只想将PACKETDATA
中的数据发送到服务器google.com/path?stuff=exist
(实际上不是该url,仅是示例)
有什么帮助,谢谢。
答案 0 :(得分:0)
您的直接编程问题是,socket.connect
期望使用一个参数进行调用,该参数是一个元组,正好包含两个项目-主机名(或IP地址)字符串和端口号。但是此程序传递的参数元组包含3个项目-主机地址,端口号和字符串'/path?stuff=exist'
。这就是为什么该错误消息抱怨发现只有3个预期只有2个东西的原因。
如果要通过UDP发送'/path?stuff=exist'
,则必须将其包括在数据报的数据部分中。您还必须想出一种使其与已经放入数据报正文中的PACKETDATA
区别开来的方法。 (不必花哨。您可以在路径字符串和PACKETDATA
之间插入一个空格。)
这里也可能存在概念上的问题。 Web服务器仅侦听TCP通信。它不侦听UDP通信。因此,除非您已安排特定的服务器在目标UDP端口上使某种侦听器接受数据报,否则即使您已经弄清楚如何获取Python进行发送,服务器端也不会收集此流量。>