All pastes #1832322 Raw Edit

Miscellany

public c v1 · immutable
#1832322 ·published 2010-03-10 19:35 UTC
rendered paste body
int net_init(){  int error;#if defined(WINDOWS) || defined(_WIN32)  WSADATA wsaData;  WORD version;  version = MAKEWORD(2,0);  if (WSAStartup(version, &wsaData) != 0) return 1;  if (LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 0) { WSACleanup(); return 2; }  net_memory_counter = 0;  if (NET_DEBUG) printf("net_init: done.\r\n");  return 0;#else  //TODO: Unix Sockets shit here..  return 1;#endif}SOCKET net_start_server(int port){  net_server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);  if (net_server == INVALID_SOCKET)  {    printf("net_start_server: %ld.\n", WSAGetLastError());    return 0;  }  _sin.sin_family = AF_INET;  _sin.sin_addr.s_addr = inet_addr("0.0.0.0");  _sin.sin_port = htons(port);  if (bind(net_server, (SOCKADDR *)&_sin, sizeof(_sin)) == SOCKET_ERROR)  {    if (NET_DEBUG) printf("net_start_server: bind() failed on port %d!\r\n", port);    closesocket(net_server);    return 0;  }  if (listen(net_server, NET_MAX_CLIENTS) == SOCKET_ERROR)  {    if (NET_DEBUG) printf("net_start_server: listen()failed! %ld.\r\n", WSAGetLastError());    return 0;  }  if (NET_DEBUG) printf("net_start_server: done, listening on port %d.\r\n", port);  return net_server;}void net_stop_server(){  closesocket(net_server);}SOCKET net_connect(char *host, int port){  struct sockaddr_in addr;  struct hostent *h;  SOCKET s;  if ((s = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) return 0;  addr.sin_family = AF_INET;  addr.sin_port = htons(port);  if ((h = gethostbyname(host)) == NULL) return 0;  addr.sin_addr.s_addr= *((unsigned long *)h->h_addr);  if ((connect(s, (struct sockaddr *)&addr, sizeof(addr))) != 0) return 0;  if (NET_DEBUG) printf("net_connect: connected to %s:%d.\r\n", host, port);  return s;}void net_disconnect(SOCKET s){   closesocket(s);   if (NET_DEBUG) printf("net_disconnect: done.\r\n");}SOCKET net_accept(){  SOCKET s;  if ((s = accept(net_server, NULL, NULL)) == INVALID_SOCKET)  {    if (NET_DEBUG) printf("net_accept: accept() failed! %ld.\r\n", WSAGetLastError());    return 0;  }  if (NET_DEBUG) printf("net_accept: done.\r\n");  return s;}int net_die(){  net_stop_server();#if defined(WINDOWS) || defined(_WIN32)  WSACleanup();  if (NET_DEBUG) printf("net_die: done.\r\n");#else  //TODO: Unix Sockets cleanup stuff here..#endif  return 0;}