Как я могу отправить некоторые UDP через Python на веб-домен? - PullRequest
0 голосов
/ 23 марта 2019

Так что в настоящее время я пытаюсь отправить udp на сервер с таким веб-доменом, как этот 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 голосов
/ 23 марта 2019

Ваша непосредственная проблема программирования заключается в том, что socket.connect ожидает вызова с аргументом, который является кортежем, содержащим ровно два элемента - строку имени хоста (или IP-адреса) и номер порта. Но эта программа передает аргумент кортеж, который содержит 3 элемента - адрес хоста, номер порта и строка '/path?stuff=exist'. Вот почему в сообщении об ошибке содержится жалоба на обнаружение 3 вещей, в которых ожидалось только 2.

Если вы хотите отправить '/path?stuff=exist' через UDP, вам придется включить его в часть данных дейтаграммы. Вам также придется придумать способ отличить его от PACKETDATA, который вы уже помещаете в тело дейтаграммы. (Это не должно быть необычно. Вы можете просто вставить пробел между строкой пути и PACKETDATA.)

Здесь также может быть концептуальная проблема. Веб-сервер только прослушивает TCP-трафик. Он не прослушивает UDP-трафик. Поэтому, если вы не договорились, чтобы на вашем конкретном сервере был какой-то слушатель, принимающий дейтаграммы на целевом порте UDP, ничто на стороне сервера не будет собирать этот трафик, даже после того, как вы выяснили, как заставить Python его отправлять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...