00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __JackNetUnixSocket__
00021 #define __JackNetUnixSocket__
00022
00023 #include "JackNetSocket.h"
00024 #include <sys/types.h>
00025 #include <sys/socket.h>
00026 #include <netdb.h>
00027 #include <netinet/in.h>
00028 #include <arpa/inet.h>
00029
00030 namespace Jack
00031 {
00032 #define NET_ERROR_CODE errno
00033 #define SOCKET_ERROR -1
00034 #define StrError strerror
00035
00036 typedef struct sockaddr socket_address_t;
00037 typedef struct in_addr address_t;
00038
00039
00040 class SERVER_EXPORT JackNetUnixSocket
00041 {
00042 private:
00043 int fSockfd;
00044 int fPort;
00045
00046 struct sockaddr_in fSendAddr;
00047 struct sockaddr_in fRecvAddr;
00048 public:
00049 JackNetUnixSocket();
00050 JackNetUnixSocket ( const char* ip, int port );
00051 JackNetUnixSocket ( const JackNetUnixSocket& );
00052 ~JackNetUnixSocket();
00053
00054 JackNetUnixSocket& operator= ( const JackNetUnixSocket& socket );
00055
00056
00057 int NewSocket();
00058 int Bind();
00059 int BindWith ( const char* ip );
00060 int BindWith ( int port );
00061 int Connect();
00062 int ConnectTo ( const char* ip );
00063 void Close();
00064 void Reset();
00065 bool IsSocket();
00066
00067
00068 void SetPort ( int port );
00069 int GetPort();
00070
00071
00072 int SetAddress ( const char* ip, int port );
00073 char* GetSendIP();
00074 char* GetRecvIP();
00075
00076
00077 int GetName ( char* name );
00078 int JoinMCastGroup ( const char* mcast_ip );
00079
00080
00081 int SetOption ( int level, int optname, const void* optval, socklen_t optlen );
00082 int GetOption ( int level, int optname, void* optval, socklen_t* optlen );
00083
00084
00085 int SetTimeOut ( int us );
00086
00087
00088 int SetLocalLoop();
00089
00090
00091 int SendTo ( const void* buffer, size_t nbytes, int flags );
00092 int SendTo ( const void* buffer, size_t nbytes, int flags, const char* ip );
00093 int Send ( const void* buffer, size_t nbytes, int flags );
00094 int RecvFrom ( void* buffer, size_t nbytes, int flags );
00095 int Recv ( void* buffer, size_t nbytes, int flags );
00096 int CatchHost ( void* buffer, size_t nbytes, int flags );
00097
00098
00099 net_error_t GetError();
00100 };
00101 }
00102
00103 #endif