All pastes #59166 Raw Edit

Unnamed

public text v1 · immutable
#59166 ·published 2006-05-27 07:59 UTC
rendered paste body

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

#include <string.h>
#include <stdlib.h>

#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;    
}