PDA

Visualizza la versione completa : [C++] connessione irc


jangy22xx
06-02-2010, 13:51
salve ragazzi sarebbe possibile creare un programma che facci connettere un client a un server irc e quindi su un canale in automatico?

oregon
06-02-2010, 13:55
Originariamente inviato da jangy22xx
... faccia ...

In che senso "automaticamente"?

jangy22xx
06-02-2010, 14:27
Originariamente inviato da oregon
In che senso "automaticamente"?

nel senso che quando si esegue il programma il client si connette al server irc

oregon
06-02-2010, 14:40
Originariamente inviato da jangy22xx
nel senso che quando si esegue il programma il client si connette al server irc

Ma come esegui il programma, non puoi eseguire direttamente il client ?

Di quale client irc stai parlando in particolare?

Con Windows ?

Con Linux ?

Quale compilatore usi?

jangy22xx
06-02-2010, 14:43
Originariamente inviato da oregon
Ma come esegui il programma, non puoi eseguire direttamente il client ?

Di quale client irc stai parlando in particolare?

Con Windows ?

Con Linux ?

Quale compilatore usi?

allora sistema operativo windows e come compilatore uso devc++
vorrei creare un programma che quando viene eseguito mi connetta automaticamente a un server irc

oregon
06-02-2010, 14:44
Capiamoci ... tu non vuoi scrivere un programma che esegua un client irc, ma vuoi scrivere un client irc ... E' cosi'? Perchè è molto diverso e piu' complicato ...

jangy22xx
06-02-2010, 14:53
Originariamente inviato da oregon
Capiamoci ... tu non vuoi scrivere un programma che esegua un client irc, ma vuoi scrivere un client irc ... E' cosi'? Perchè è molto diverso e piu' complicato ...
si esatto un client irc....devo usare la programmazione socket ? e devo anche conoscere qualcosa sul protocollo irc?

oregon
06-02-2010, 14:57
Originariamente inviato da jangy22xx
si esatto un client irc....

Ah ... allora è un'altra storia ... stai parlando di un programma complesso, che certamente non si puo' affrontare in un forum ...


devo usare la programmazione socket ? e devo anche conoscere qualcosa sul protocollo irc?

Ovviamente ... !

Dal fatto che lo chiedi, capisco che non è un programma alla tua portata, per adesso ...

Ti consiglio qualche altro progetto ...

MItaly
06-02-2010, 19:46
Comunque, se volessi provare, questa (http://irchelp.org/irchelp/rfc/rfc.html) è la RFC riguardante il protocollo IRC originale; come spiegato qui (http://irchelp.org/irchelp/rfc/index.html), dopo la prima RFC ce ne sono state delle altre di cui dovresti tenere conto.

jangy22xx
06-02-2010, 20:17
mi sono messo un pò alla ricerca di informazioni e ho trovato un pò di cose utili e qualche script che ho modificato
per copnnettersi al server basta effettuare una semplice connessione client-server con i socket in c, dopodichè bisogna dare i comandi irc sul server una volta connessi....ho modificato il seguente codice:

#include <stdio.h>
#include <winsock.h>

int main(int argc, char *argv[])
{
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0)
return 0;

SOCKET hSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (hSocket == INVALID_SOCKET)
{
WSACleanup();
return 0;
}

SOCKADDR_IN sockAddr;
sockAddr.sin_port = htons(6667);
sockAddr.sin_addr.s_addr = inet_addr("69.42.221.149");
sockAddr.sin_family = AF_INET;

if (connect(hSocket, (SOCKADDR *)&sockAddr, sizeof(sockAddr)) != 0)
{
WSACleanup();
return 0;
}

char buffer[260], temp[260];

while (1)
{
int bytesRcv = recv(hSocket, buffer, sizeof(buffer), 0);

if (bytesRcv != 0 || bytesRcv != SOCKET_ERROR)
{
printf("%s", buffer);

if (strstr(buffer, "No ident response") != NULL)
{
sprintf(temp, "USER something something something :something \r\n");
send(hSocket, temp, strlen(temp), 0);

sprintf(temp, "NICK something \r\n");
send(hSocket, temp, strlen(temp), 0);
}
} else break;
}

return 0;
}

alcune cose non funzionavano....ogni comando irc deve terminare con \r\n
non capisco però come fare a entrare in un canale...il comando è /join #nome canale ma non funziona se inserisco questo comando

Loading