21.03.2013 Views

Problem - Kevin Tafuro

Problem - Kevin Tafuro

Problem - Kevin Tafuro

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

#include <br />

#include <br />

#include <br />

#ifndef WIN32<br />

#include <br />

#include <br />

#include <br />

#include <br />

#include <br />

#include <br />

#include <br />

#include <br />

#define INVALID_SOCKET -1<br />

#define closesocket(x) close((x))<br />

#else<br />

#include <br />

#include <br />

#endif<br />

#define SPC_SOCKETFLAG_BOUND 0x1<br />

#define SPC_SOCKETFLAG_DGRAM 0x2<br />

typedef struct {<br />

#ifdef WIN32<br />

SOCKET sd;<br />

#else<br />

int sd;<br />

#endif<br />

int domain;<br />

struct sockaddr *addr;<br />

int addrlen;<br />

int flags;<br />

} spc_socket_t;<br />

void spc_socket_close(spc_socket_t *);<br />

static int make_sockaddr(int *domain, struct sockaddr **addr, char *host,<br />

int port) {<br />

int addrlen;<br />

in_addr_t ipaddr;<br />

struct hostent *he;<br />

struct sockaddr_in *addr_inet;<br />

if (!host) ipaddr = INADDR_ANY;<br />

else {<br />

if (!(he = gethostbyname(host))) {<br />

if ((ipaddr = inet_addr(host)) = = INADDR_NONE) return 0;<br />

} else ipaddr = *(in_addr_t *)he->h_addr_list[0];<br />

endhostent( );<br />

}<br />

#ifndef WIN32<br />

if (inet_addr("127.0.0.1") = = ipaddr) {<br />

478 | Chapter 9: Networking<br />

This is the Title of the Book, eMatter Edition<br />

Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!