//获取本地IP地址和对端IP地址

 1 //获取本地IP地址

 2 CHAR * GetLocalIpAdrr(int fd)

 3 {

 4     struct sockaddr_in stHost;

 5     memset(&stHost, 0, sizeof(stHost));

 6 

 7 #ifdef _WIN32

 8     INT iLen = sizeof(stHost);

 9 #else

10     socklen_t iLen = sizeof(stHost);

11 #endif

12     CHAR * szHostIp;

13 

14     if(0 != getsockname((UINT)fd, (sockaddr *)&stHost, &iLen))

15     {

16         g_enErrorCode = PU_ERROR_CODE_SOCKET_ERROR;

17         return NULL;

18     }

19     szHostIp = inet_ntoa(stHost.sin_addr);

20 

21     return szHostIp;

22 }

23 

24 //获取对端IP地址

25 CHAR * GetRemoteIpAddr(int fd)

26 {

27     struct sockaddr_in stRemote;

28     memset(&stRemote, 0, sizeof(stRemote));

29 

30 #ifdef _WIN32

31     INT iLen = sizeof(stRemote);

32 #else

33     socklen_t iLen = sizeof(stRemote);

34 #endif

35     CHAR * szRemoteIp;

36 

37     if (0 != getpeername((UINT)fd, (sockaddr *)&stRemote, &iLen))

38     {

39         g_enErrorCode = PU_ERROR_CODE_SOCKET_ERROR;

40         return NULL;

41     }

42     szRemoteIp = inet_ntoa(stRemote.sin_addr);

43     return szRemoteIp;

44 }

你可能感兴趣的:(IP地址)