Программирование простого клиента IRC (Internet-Relay-Chat)

Я начал использовать IRC в молодом возрасте, и я всегда был очарован этим. В качестве языкового упражнения я думал о программировании простого клиента IRC на Ruby с использованием Shoes в качестве графического интерфейса. Мой вопрос к вам, дамы и господа, с чем мне нужно ознакомиться, чтобы начать это великое приключение (кроме обуви и, конечно, Руби)? Я предполагаю, что есть какая-то спецификация протокола IRC. Есть указатели?

23.08.2008 15:49:06
5 ОТВЕТОВ
РЕШЕНИЕ

В предыдущем посте упоминался RFC1459. Хотя это очень хорошее введение в IRC, оно фактически было заменено RFC 2810-2813. Вот более полный список документации, которая вам необходима для программирования всего, что связано с IRC:

27
26.09.2013 06:34:55
Обратите внимание, что RFC2810-RFC2813 написаны только для моего IRCnet (после большого раскола). IRCnet - единственная крупная сеть, которая поддерживает !каналы. 005 разбирать и понимать каждый токен ... сложно. Различные сети поддерживают другие режимы канала (например q, aи в hкачестве владельца, администратора и HALFOP)
Johannes Kuhn 26.09.2013 09:44:06
005Парсинг не так уж и сложен, на самом деле. Новые токены добавляются не часто (тем более в будущем, когда IRCv3 будет принят), и анализ текущих токенов довольно прост: github.com/cinchrb/cinch/blob/master/lib/cinch/isupport.rb
Hinrik 25.11.2013 11:04:35
Вы не анализируете все токены. Вы просто разбираете несколько жетонов, но не все.
Johannes Kuhn 25.11.2013 12:37:27
Например, вы не ищите токены CNOTICEили CPRIVMSGтокены.
Johannes Kuhn 25.11.2013 12:39:16
Если вы посмотрите внимательно, то увидите, что в коде есть специальные случаи только для нескольких токенов, и предполагается, что все остальные токены являются логическими (например, CNOTICEили CPRIVMSG) или строковыми значениями, если они содержат «=» (например SOMETHING=foobar). Так что он поддерживает любые будущие токены этих типов. Фактически, любой специальный разбор сложных значений токенов (например, значение в CHANMODES=b,k,l,imnpstr) просто для удобства. В маловероятном случае добавления нового вида токена, подобного этому, и того, что библиотека еще не проанализировала его, пользователь все равно сможет получить доступ к значению в виде строки.
Hinrik 25.11.2013 18:00:48

Спецификация IRC изложена в RFC 1459

http://www.irchelp.org/irchelp/rfc/rfc.html

10
23.08.2008 15:49:53

Я нашел этот драгоценный камень в Википедии. Звучит пугающе.

Это на самом деле нет.

Telnet на IRC-сервер и убедитесь в простоте протокола из первых рук. Самое сложное - это рукопожатие, после чего все очень просто.

7
23.08.2008 15:59:07
+1 - я болтал по IRC через telnet (только для гиков)
Blorgbeard is out 10.04.2009 13:19:15

Однажды я реализовал клиент и сервер еще с двумя парнями (как часть курса).
Я могу сказать вам, что RFC, с которым вы уже связаны, великолепен.
Я также попробовал бы просто прослушать соединение с существующим клиентом, чтобы убедиться, как все работает.

2
23.08.2008 19:24:06

Не совсем ответ на ваш вопрос, но это может быть полезно. Если вы используете Ruby, я обнаружил, что проект Autumn Leaves является отличным способом построить IRC-бот с использованием Ruby:

http://github.com/RISCfuture/autumn/tree/master

Это в значительной степени Джиббл мира Ruby.

0
9.02.2009 01:56:37