2010-07-08 4 views
2

Я делаю клиентский чат IRC, и я хочу получить список пользователей или просто счет пользователя, как я могу это сделать. Это метод я использую для подключения к IRC:Получение количества пользователей от IRC

Private Sub IRCConnect() 
     Dim stream As NetworkStream 
     Dim irc As TcpClient 
     Dim reader As StreamReader 
     Try 
      irc = New TcpClient(SERVER, PORT) 
      stream = irc.GetStream() 
      reader = New StreamReader(stream) 
      writer = New StreamWriter(stream) 
      ' Start PingSender thread 
      Dim ping As New PingSender 
      ping.Start() 
      writer.WriteLine(USER) 
      writer.Flush() 
      writer.WriteLine("NICK " & Config.Nickname) 
      writer.Flush() 
      writer.WriteLine("JOIN " & Config.Channel & " " & Config.ChanPass) 
      writer.Flush() 
      txtView.Text = txtView.Text & ">Connected successfully." & vbNewLine 
      HighlightPhrase(txtView, "Connected successfully.", Color.Lime) 
      Thread.Sleep(2000) 
     Catch Ex As Exception 
      ' Show the exception, sleep for a while and try to establish a new connection to irc server 
      txtView.Text = txtView.Text & ">ERROR: Unexpected error occured: " & Ex.ToString & vbNewLine 
      HighlightPhrase(txtView, "Unexpected error occured: " & Ex.ToString, Color.Red) 
     End Try 
    End Sub 

Я понятия не имею, с чего начать, любая помощь будет оценена.

+0

Это работало для вас сейчас? – Erik

+0

любое окончательное решение с полным исходным кодом? – Kiquenet

ответ

4

ИРЦ-протокол определен в RFC2812: http://tools.ietf.org/html/rfc2812

Отправить на «ИМЕНА #currentchannel» - команда (http://tools.ietf.org/html/rfc2812#section-3.2.5), и вы получите список всех видимых пользователей. Этот список можно подсчитать и вайля - там вы получили свой счет пользователя

+0

Я не знал об этой команде, очень ценю, но как я могу читать с выхода сервера IRC? – Ben

+0

imho у вас есть «читатель» (New StreamReader (stream)), где вы должны получить «ответы» на сервере – Erik

+0

При попытке получить считыватель. Чтение приложения не отвечает («Не отвечает»). – Ben

1

Начните с чтения спецификации IRC, it is RFC 2812.

Вы должны использовать сообщение NAMES. Here is the appropriate section из RFC.

+0

Когда вы присоединяетесь к какому-либо каналу, ответ NAMES отправляется автоматически. Единственная причина для его повторного запроса - обновить количество пользователей. Как правило, это расточительно, так как вместо этого вы можете просто отслеживать JOIN, PART, KICK и QUIT, чтобы сохранить общее количество в вашей программе ... – braindigitalis

Смежные вопросы