Мне было интересно, как с помощью C узнать, какой порт клиент в данный момент слушает. т.е. я хочу знать, что такое порт источника, а не порт назначения.номер порта клиента
Заранее благодарен!
Мне было интересно, как с помощью C узнать, какой порт клиент в данный момент слушает. т.е. я хочу знать, что такое порт источника, а не порт назначения.номер порта клиента
Заранее благодарен!
Структура адреса сокета должна быть заполнена системным вызовом connect(). Проверьте его после успешного возврата от этого вызова.
Не уверен, что вы имеете в виду. Клиенты не слушают, серверы делают.
Я думал, что они слушают открытый номер порта, на который они запрашивают ОС. Похоже, это так ... также по какой-то причине серверы торрентов требуют, чтобы вы отправляли порт, который прослушивает клиент. – Cenoc
@Cenoc: это потому, что клиент bittorrent также выступает в качестве «сервера» для других машин в рое для подключения (т. Е. Получает входящие соединения). P2P смущает обычное разделение клиент-сервер, но когда речь идет об одном TCP-соединении, «клиент» подразумевает, кто инициировал соединение. –
Правильно, но он по-прежнему подключается как клиент, поэтому мой вопрос: как мне найти этот исходный порт для отправки в этом сценарии? – Cenoc
Если вы говорите о том, как сканировать для все открытые порты, то вы можете воспользоваться портовым сканером. Существует много многих исходных кодов, но я определенно не рекомендую вам использовать один из них, они обычно медленны, даже если включена многопоточность. Зачем? Там nmap
: http://nmap.org/
В зависимости от того, что вы хотите (что я слишком тупо угадываю прямо сейчас), вы хотите вызвать либо getsockname(), либо getpeername().
Стив Джессоп дал мне ответ, который я искал, я не уверен, что делать с этим вопросом сейчас ... – Cenoc