Путаница из-за сокетов и портов - PullRequest
1 голос
/ 11 февраля 2012

Я пытаюсь написать программу, которая будет «слушать» приложение, работающее через порт через TCP / IP.

Когда я указываю своему браузеру на localhost: 30003, я получаю поток вывода из приложения, выведенного на экран. Похоже, что браузер успешно «слушает» порт.

Что здесь происходит? Мой браузер опрашивает приложение или приложение выдвигает tcp-данные, которые получает браузер?

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

Ответы [ 3 ]

2 голосов
/ 11 февраля 2012

Один из лучших способов узнать, что на самом деле происходит, - запустить Wireshark и проследить за потоком tcp.

http://www.wireshark.org/

Кроме того, вы можете использовать что-то вроде TCP mon, если вам важен только текст, а не сетевые подробности.

http://ws.apache.org/commons/tcpmon/download.cgi

Исходя из ограниченной информации в вашем вопросе, наиболее вероятно, что браузер устанавливает tcp-соединение, и вы отправляете обратно неверный ответ. Браузер предполагает, что вы испорченный сайт, и лучше всего подстраивается. Если вы не отправляете правильный заголовок http, он не знает, что еще делать, поэтому , вероятно, просто выводит текст на экран.

Лучший способ узнать подробности - это wireshark или tcpmon

0 голосов
/ 11 февраля 2012

когда вы пишете "localhost:30003" в вашем браузере, устанавливается соединение с какой-либо программой, которая прослушивает порт 30003 на вашем компьютере.Префикс в URL (HTTP по умолчанию) определяет протокол, используемый сервером и клиентом, в этом случае браузер является клиентом, подключающимся к вашему ПК, сервером.

Если вы хотите сделать то же самое с вашимВ программе вы можете установить сокет-соединение с вашим локальным хостом, используя тот же порт 30003. Затем ваша программа станет клиентом.В зависимости от программы (о которой вы ничего не упоминаете) у вас может быть больше параметров протокола, и вам потребуется обработать протокол в вашей программе.

Альтернативой является использование telnet для подключения к вашей программе.но это зависит от доступных протоколов.

0 голосов
/ 11 февраля 2012

Указание браузера на localhost: 30003 заставит его открыть соединение с портом 30003 на localhost и отправит строку «GET /», чтобы запросить веб-страницу у того, кто считает, что это веб-хост. Какой бы текст ни отправлялся вашим приложением при получении соединения, он просто отображается веб-браузером, как если бы он получил содержимое текстового файла на веб-сервере.

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