2015-08-30 15 views
2

У меня есть источник irc-клиента с какого-то сайта. это какой-то код:C# irc клиент-потоковик просто отправить одно слово

 using System; 
     using System.Collections.Generic; 
     using System.Linq; 
     using System.Text; 
     using System.Net; 
     using System.Net.Sockets; 
     using System.IO; 
     using System.Text.RegularExpressions; 
    namespace tes_irc 
    { 
     class Program 
     { 
      static string[] usuarios; 
      static void Main(string[] args) 
      { 

       NetworkStream conexion; 
       TcpClient irc; 
       StreamReader leer_datos; 
       StreamWriter mandar_datos; 

       string host = "irc.dal.net"; 
       string nickname = "testing"; 
       string canal = "#gsgsge"; 


     string code = ""; 
      leer_datos = new StreamReader(conexion); 
      mandar_datos = new StreamWriter(conexion); 

      mandar_datos.WriteLine("NICK " + nickname); 
      mandar_datos.Flush(); 
      mandar_datos.WriteLine("USER " + nickname + " 1 1 1 1"); 
      mandar_datos.Flush(); 
      mandar_datos.WriteLine("JOIN " + canal); 
      mandar_datos.Flush(); 
      while (true) // Mi bucle eterno 
      { 
       while ((code = leer_datos.ReadLine()) != null) 
       { 
        Console.WriteLine("Code : " + code); 
        Match regex = Regex.Match(code, "PING(.*)", RegexOptions.IgnoreCase); 

        if (regex.Success) 
        { 
         Console.WriteLine("hehe"); 
         string te_doy_pong = "PONG " + regex.Groups[1].Value; 
         mandar_datos.WriteLine(te_doy_pong); 
         mandar_datos.Flush(); 
        } 

        regex = Regex.Match(code, ":(.*) 353 (.*) = (.*) :(.*)", RegexOptions.IgnoreCase); 
        if (regex.Success) 
        { 
         string usuarios_lista = regex.Groups[4].Value; 
         usuarios = usuarios_lista.Split(' '); 
         foreach (string usuario in usuarios) 
         { 
          Console.Write("[+] User : " + usuario); 
         } 

         mandar_datos.WriteLine("PRIVMSG" + " " + canal + " " + "Hello World"); 
         mandar_datos.Flush(); 
        } 
       } 
      } 
     } 
    } 
} 

Подключение Сукчес, но когда я пишу для отправки сообщения, как «Привет мир» просто отправить «Hello». что случилось с этим кодом? возможно, должен кодировать строку раньше? или? пожалуйста, помогите мне. Спасибо до:

+0

Попробуйте добавить двоеточие (':') перед «Hello». – cubrr

+0

@cubrr wooooooooowwwww. отлично работать: D. Огромное спасибо. – kresek

ответ

1

Окончательный аргумент вашей команды IRC должен иметь префикс с символом двоеточия (:). В противном случае разбор аргумента закончится в первом пробеле.

mandar_datos.WriteLine("PRIVMSG" + " " + canal + " " + ":Hello World"); 
+0

Да, я стараюсь, отлично работает. Большое вам спасибо: D – kresek