如何通过python将udp发送到网站域?

时间:2019-03-22 23:58:10

标签: python http udp

所以目前我正在尝试将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,仅是示例) 有什么帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

您的直接编程问题是,socket.connect期望使用一个参数进行调用,该参数是一个元组,正好包含两个项目-主机名(或IP地址)字符串和端口号。但是此程序传递的参数元组包含3个项目-主机地址,端口号字符串'/path?stuff=exist'。这就是为什么该错误消息抱怨发现只有3个预期只有2个东西的原因。

如果要通过UDP发送'/path?stuff=exist',则必须将其包括在数据报的数据部分中。您还必须想出一种使其与已经放入数据报正文中的PACKETDATA区别开来的方法。 (不必花哨。您可以在路径字符串和PACKETDATA之间插入一个空格。)

这里也可能存在概念上的问题。 Web服务器仅侦听TCP通信。它不侦听UDP通信。因此,除非您已安排特定的服务器在目标UDP端口上使某种侦听器接受数据报,否则即使您已经弄清楚如何获取Python进行发送,服务器端也不会收集此流量。