#include #include #include #include #include #include #include #define MAXBUFSIZE 16384 void error(char *msg) { perror(msg); exit(0); } void sendtosock(int sockfd, char *buf, int len) { int pos=0, bytessend; do { if (bytessend = send(sockfd, buf+pos, len-pos, 0) < 0) { printf("send() error\n"); exit(-1); } pos += bytessend; } while (bytessend > 0); } void recvfromsock(int sockfd, char *buf, int len) { int bytesrecv; bytesrecv = recv(sockfd, buf, len, 0); } int main(int argc, char *argv[]) { int sockfd; int portno=6667; char ircserv[20]="global.irc.gr"; struct sockaddr_in serv_addr; struct hostent *server; char buffer[MAXBUFSIZE]; sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { error("ERROR opening socket"); } server = gethostbyname(ircserv); if (server == NULL) { fprintf(stderr,"ERROR, no such host\n"); exit(0); } bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length); serv_addr.sin_port = htons(portno); if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) { error("ERROR connecting"); } strcpy(buffer, "NICK _stathis_\r\n"); sendtosock(sockfd, buffer, strlen(buffer)); strcpy(buffer, "USER guest tolmoon tolsun :Ronnie Reagan"); sendtosock(sockfd, buffer, strlen(buffer)); while (recv(sockfd, buffer, 255, 0) > 0) { if (strstr(buffer, "PING")) { sendtosock(sockfd, "PONG\n", strlen("PONG\n")); } } return 0; }