He estado investigando un poco como comunicarse con un servidor IRC (solo lo básico, conectarse a un canal y mandar un mensaje), y junto con varios códigos que he estado leyendo en internet, he conseguido armar un código que en teoría se conecta al irc y envia un mensaje de prueba, el caso es que lo he ejecutado, no da ningún error, hasta dice en mi terminal que se ha conectado, pero no veo que mande el mensaje ni se conecte el usuario del bot, dejo el código completo aquí:
offtopic: He estado viendo como se usan los sockets en Python y no tiene comparación... en C me resulta muy dificil comprenderlo.
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
int main(int argc, char *argv []) {
int mysocket;
struct sockaddr_in server;
struct hostent *he;
if ((he=gethostbyname(argv[1]))==NULL){
/* llamada a gethostbyname() */
printf("gethostbyname() error\n");
exit(-1);
}
if ((mysocket=socket(AF_INET, SOCK_STREAM, 0))==-1){
/* llamada a socket() */
printf("socket() error\n");
exit(-1);
}
server.sin_family = AF_INET;
server.sin_port = htons(6667);
/* htons() es necesaria nuevamente ;-o */
server.sin_addr = *((struct in_addr *)he->h_addr);
/*he->h_addr pasa la información de ``*he'' a "h_addr" */
bzero(&(server.sin_zero),8);
if(connect(mysocket, (struct sockaddr *)&server,
sizeof(struct sockaddr))==-1){
/* llamada a connect() */
printf("connect() error\n");
exit(-1);
}
printf("conexion establecida\n");
send(mysocket,"NICK Snake\r\n",strlen("NICK Snake\r\n"),0);
send(mysocket,"USER Snake\r\n",strlen("USER Snake\r\n"),0);
send(mysocket,"JOIN #amor\r\n",strlen("JOIN #amor\r\n"),0);
send(mysocket,"PRIVMSG #amor :Hello world!\r\n",strlen("PRIVMSG #amor :Hello world!\r\n"),0);
close(mysocket);
}
offtopic: He estado viendo como se usan los sockets en Python y no tiene comparación... en C me resulta muy dificil comprenderlo.