IRC клиент в питоне - PullRequest
       6

IRC клиент в питоне

5 голосов
/ 10 ноября 2010

Я пишу код Python для IRC-клиента.

Я хочу понять, как клиент и сервер IRC общаются друг с другом.

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

Спасибо

Ответы [ 3 ]

11 голосов
/ 07 апреля 2012

Документация IRC RFC является важным справочным материалом, но первое полезное введение, которое я нашел в связи между клиентом и сервером IRC, было действительно простым.

Во-первых, вам нужен доступ к * nix shell (например, ssh на вашем веб-хосте под управлением Linux).

В командной строке откройте прямое соединение с IRC-сервером с помощью программы nc.Затем вы можете ввести команды RFC напрямую и посмотреть ответ.Попробуйте набрать

$ nc wright.freenode.net 6667
PASS whateveryoulike
NICK yournick
USER username 0 * :Real Name

На этом сервере есть выходные данные, но теперь вы вошли в систему и "зарегистрировали" своего пользователя.Примечание: ваш ник не зарегистрирован (аля NickServ), я имею в виду регистрацию пользователя, как описано в разделе 3.1 IRC 2812 IRC Client Protocol *1009*.

Теперь вы можете присоединитьсяканал:

JOIN #yourtestchannel

Посмотрите, кто на канале:

WHO #yourtestchannel

Отправьте себе сообщение:

PRIVMSG yournick Message Text Here

Чат на канал (отправьте канал наmsg):

PRIVMSG #yourtestchannel Message Text Here

Это особенно полезно, если вы подключены к тому же серверу и каналу с другим ником в реальном IRC-клиенте.Вы можете пообщаться с самим собой и отправить один ник другому, а также увидеть «необработанный» вывод IRC, который вам придется проанализировать, чтобы написать собственный клиент или бот.

Например, кто-то общается в чате на канале.выглядит примерно так:

:SomeDude28!SomeDude28@hoststring-with_various_parts PRIVMSG #channel :Hey guys, what's up?

Используя RFC, вы можете поиграть с любыми нужными вам функциями и, что более важно, выяснить, как вам нужно разбирать вещи.

О, и не забывайте время от времени PONG или когда вам будет предложено PING, чтобы избежать тайм-аута пинга.

9 голосов
/ 10 ноября 2010

Если вы хотите заново изобрести колесо, то вам нужно внедрить RFC и делать все с нуля.

Если вы не хотите этого делать и вам потребуется некоторый уровень абстракции, чтобы облегчить ваше развитие (и что вам следует), см. Twisted .

Существует также клиент Python IRC библиотека.

5 голосов
/ 10 ноября 2010

Для большинства протоколов хорошим способом для начала является поиск документа под названием RFC. Существует один протокол для многих протоколов, и он детально определяет, как он должен себя вести.

Вы можете найти один для IRC здесь .

...