Как передавать двоичные данные в Python - PullRequest
1 голос
/ 20 сентября 2009

Я хочу передавать двоичные данные, используя python. Я понятия не имею, как этого добиться. Я создал программу для сокетов Python, используя SOCK_DGRAM. Проблема с SOCK_STREAM в том, что он не работает через интернет, так как наш isp не разрешает сокет tcp-сервера.

Я хочу периодически передавать снимки экрана на удаленный компьютер. У меня есть идея поддержания очереди двоичных данных, и два потока пишут и читают синхронно. Я не хочу использовать VNC.

Как мне это сделать?

Я написал сокет сервера и сокет клиента, используя SOCK_STREAM, он работал на локальном хосте и не работал через Интернет, даже если были установлены соответствующие ip. Мы также пытались запустить веб-сервер tomcat на одном компьютере и пытались получить доступ через другой компьютер в Интернете, но не работали.

Ответы [ 2 ]

3 голосов
/ 20 сентября 2009

SOCK_STREAM - правильный способ потоковой передачи данных.

То, что вы говорите о интернет-провайдерах, имеет мало смысла; они не контролируют, слушает ли ваша машина определенный порт интерфейса. Возможно, вы говорите о брандмауэре / решении проблем?

Если вы настаиваете на использовании UDP (а вам не следует этого делать, потому что вам придется беспокоиться о том, что пакеты приходят не на своем месте или не приходят вообще), вам сначала нужно будет использовать socket.bind, а затем socket.recvfrom в цикле для чтения данных и отслеживания открытых соединений. Это будет тяжелая работа, чтобы сделать правильно.

2 голосов
/ 20 сентября 2009

Здесь есть две проблемы.

Первая проблема, вам нужно будет обратиться к удаленной стороне. Это связано с тем, что вы назвали «не работает через Интернет, так как большинство интернет-провайдеров не допускают сокет TCP-сервера». Обычно это сложно, потому что другая сторона может быть размещена за NAT или межсетевым экраном.

Что касается второй проблемы, проблемы фактической передачи данных после того, как вы можете установить TCP-соединение, то python-сокет будет работать, если вы сможете обратиться к удаленной стороне.

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