Обработка идентификатора для моего IRC-бота

В настоящее время я создаю бота IRC для учебных целей в C для учебных целей. У меня возникли проблемы с обработкой идентификационного сообщения, которое сервер отправляет моему боту. Я знаю, что должен прослушивать порт 113 для сообщения ident и отправлять ответ ident. Проблема в том, что я не могу привязать созданный сокет к порту 113, чтобы прослушать это сообщение.

Есть ли способ привязаться к порту 113 или другое решение этой проблемы? Кроме того, как мне ответить на идентификационное сообщение, которое отправляет сервер?


person seraphzero    schedule 10.06.2012    source источник


Ответы (2)


Для привязки к портам ниже 1024 требуется root-доступ в Linux и права администратора в Windows. Попробуйте запустить от имени администратора и посмотрите, поможет ли это. Если вы по-прежнему не можете выполнить привязку, проверьте, не работает ли служба на 113:

# Windows
netstat -a | find "listening"
# Linux
netstat -lnptu

Опять же, вам может понадобиться запустить от имени пользователя root/admin, чтобы увидеть, какие порты используются.

Дополнительную информацию об идентификаторе можно найти в RFC, http://tools.ietf.org/html/rfc1413 что на самом деле довольно лаконично.

Кроме того, вам может не обязательно запускать службу Ident для подключения (хотя это предпочтительнее!), в зависимости от сети. Это будет зависеть от сервера, к которому вы подключаетесь, но попробуйте дождаться неудачной попытки запроса Ident сервера и посмотреть, как он себя ведет.

person stew    schedule 10.06.2012
comment
Пишет, что время ожидания запроса Ident истекло. затем Не удалось найти ваш идентификатор, вместо этого использовал ~testbot. прежде чем продолжить и отобразить нормальное поведение IRC и присоединиться к каналу. Я так понимаю, что мне не нужно с этим справляться? - person seraphzero; 11.06.2012
comment
Тогда вы можете смело игнорировать это. В наши дни есть несколько серверов, которые требуют этого, поэтому, если вам не нужно запускать/подделывать identd, не беспокойтесь. Интересно, что если вы хотите увидеть разницу, популярный IRC-клиент mIRC имеет возможность запуска службы identd для IRC-соединений. - person stew; 11.06.2012

Ответ на ident не является привилегией или обязанностью вашего бота. Весь смысл протокола ident заключается в том, чтобы машина могла идентифицировать пользователя, с которым работает сетевой клиент, в качестве удаленного сервера, к которому клиент подключился; это делается для того, чтобы определить ответственную сторону, если клиент будет признан злоупотребляющим, чтобы виновный пользователь, а не администратор оболочки, мог быть привлечен к ответственности.

person R.. GitHub STOP HELPING ICE    schedule 11.06.2012