#ifndef SG_IO_SOCKET_HXX
#define SG_IO_SOCKET_HXX
-#include <errno.h>
+//#include <errno.h>
-#if defined(__APPLE__) || defined(__FreeBSD__)
-# include <netinet/in.h>
-#endif
+//#if defined(__APPLE__) || defined(__FreeBSD__)
+//# include <netinet/in.h>
+//#endif
+struct sockaddr_in;
+struct sockaddr;
+
namespace simgear
{
*/
class IPAddress
{
+ struct sockaddr_in* addr;
public:
- IPAddress () {}
+ IPAddress () : addr(0) {}
IPAddress ( const char* host, int port ) ;
- IPAddress ( struct sockaddr* addr, size_t len );
+ ~IPAddress();
+ IPAddress( const IPAddress& other );
+ const IPAddress& operator=(const IPAddress& other);
+
void set ( const char* host, int port ) ;
const char* getHost () const ;
unsigned int getPort() const ;
bool getBroadcast () const ;
- void setPort(unsigned int port);
- const struct sockaddr_in* getAddress() const
- { return &_raw; }
-
- const size_t getAddressSize() const
- { return sizeof(struct sockaddr_in); }
-private:
- struct sockaddr_in _raw;
+ unsigned int getAddrLen() const;
+ sockaddr* getAddr() const;
};
int listen ( int backlog ) ;
int accept ( IPAddress* addr ) ;
int connect ( const char* host, int port ) ;
- int connect ( const IPAddress& addr ) ;
+ int connect ( IPAddress* addr ) ;
int send ( const void * buffer, int size, int flags = 0 ) ;
int sendto ( const void * buffer, int size, int flags, const IPAddress* to ) ;
int recv ( void * buffer, int size, int flags = 0 ) ;