Newer
Older
tuvebot / socket.c
@reddawg reddawg on 26 Nov 2007 1 KB Tryign to get reconnect
/*
  tuvebot - Socket Code
  (c) 2007 Christopher Olsen

 $Id$
 */

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#include <stdio.h>
#include <stdarg.h>
#include <fcntl.h>

#include "tuvebot.h"

int mySocket = 0x0;

int sStartSocket() {
  struct sockaddr_in rmAddr;      // remote address information
  struct hostent *hp;

  if ((mySocket = socket(PF_INET, SOCK_STREAM, 0)) == -1) {
    perror("socket");
    exit(1);
    }
    
  return(sConnect(SERVER_HOST,SERVER_PORT);
  }
  
int sConnect(const char *host,int port) {

   hp = gethostbyname(host);

   memcpy(&(rmAddr.sin_addr.s_addr),*(hp->h_addr_list),sizeof(struct in_addr));  

   rmAddr.sin_family = AF_INET;       // host byte order
   rmAddr.sin_port = htons(port);     // short, network byte order
   memset(rmAddr.sin_zero, '\0', sizeof rmAddr.sin_zero);

  connect(mySocket,&rmAddr,sizeof(rmAddr));

  writeLog(2,"my Socket: [%i]\n",mySocket);

  return(0x0);
  }

ssize_t sReadSocket(void *buffer,size_t length) {
  ssize_t recLen = 0x0;

  recLen = read(mySocket,buffer,length);

  return(recLen);
  }

int sWriteSocket(char const * __restrict fmt, ...) {
  char data[1024];
  va_list ap;

  va_start(ap,fmt);
  vsnprintf(data,2048,fmt,ap);
  va_end(ap);


  send(mySocket,data,strlen(data),MSG_NOSIGNAL);
  return(0x0);
  }

int sGetConnections(fd_set *readset) {

  FD_ZERO(readset);

  FD_SET(mySocket,readset);

  highSock = mySocket + 1;

  return(0x0);
  }