/* 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); }