Работа с Irc через Winsock

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by FairHawk, 28 Jun 2010.

Thread Status:
Not open for further replies.
  1. FairHawk

    FairHawk Member

    Joined:
    16 Mar 2010
    Messages:
    46
    Likes Received:
    6
    Reputations:
    0
    пробывал присоединиться так:
    Code:
      WSAStartup($101,_wsaData);
      _clientSocket=socket(AF_INET,SOCK_STREAM,0);
      if _clientSocket=INVALID_SOCKET then
         ShowMessage('Socket Error');
    
      _clientAddr.sin_family=AF_INET;
      _clientAddr.sin_addr.S_addr=inet_addr(pchar('irc.host.ru'));
      _clientAddr.sin_port=htons(6667);
    
    if Connect(_clientsocket, _clientaddr, sizeof(_clientaddr))= 0 then
      ShowMessage('Good')
    else
      ShowMessage('Bag (');
      Sleep(100);
    
    Вылазет Bag.
     
  2. transserg

    transserg Elder - Старейшина

    Joined:
    2 Jul 2008
    Messages:
    147
    Likes Received:
    25
    Reputations:
    2
    а что за пробел в адресе?
    Code:
    (pchar('irc.h  ost.ru'));
    
     
  3. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    тут надо указывать ip а не домен
     
  4. FairHawk

    FairHawk Member

    Joined:
    16 Mar 2010
    Messages:
    46
    Likes Received:
    6
    Reputations:
    0
    wolmer помогло, спс
    Хотя то что доменное имя вставить нельзя, огорчает
     
  5. transserg

    transserg Elder - Старейшина

    Joined:
    2 Jul 2008
    Messages:
    147
    Likes Received:
    25
    Reputations:
    2
    FairHawk
    gethostbyname для преобразования адреса
     
  6. FairHawk

    FairHawk Member

    Joined:
    16 Mar 2010
    Messages:
    46
    Likes Received:
    6
    Reputations:
    0
    transserg да, спс
    А как теперь, зайти на канал?
    Пробывал так:
    Code:
    nick:= 'NICK TEST12';
    join:= 'JOIN #test';
      send(_clientSocket, pchar(Nick), sizeOf(NICK),0);
      send(_clientSocket, JOIN, sizeOf(JOIN),0);
    
     
  7. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    С irc не имел дело, но
    Если переменные nick, join типа char (точнее массив char'ов), то код не скомпилится, так как массиву нельзя так присваивать

    в случае если переменные nick, join типа string, то посылай пакеты (команды) так:
    Code:
      send(_clientSocket, Nick[1], length(NICK),0);
      send(_clientSocket, JOIN[1], length(JOIN),0);
    Ах да, советую набрать в гугле текст типа: "протокол irc", или же поискать исходники irc клиента на делфи (чтобы знать, как работать с irc сервером)
     
    #7 wolmer, 28 Jun 2010
    Last edited: 28 Jun 2010
  8. FairHawk

    FairHawk Member

    Joined:
    16 Mar 2010
    Messages:
    46
    Likes Received:
    6
    Reputations:
    0
    send(_clientSocket, Nick[1], length(NICK),0);
    send(_clientSocket, JOIN[1], length(JOIN),0);
    просниффел, отправляет "nickuserjoin'
     
Thread Status:
Not open for further replies.