Socket IP地址函式


UNIX提供各種功能呼叫,這將有助於操縱IP地址。這些函式將ASCII字串和網路位元組有序的網際網路地址的二進位制值(值儲存在通訊端地址結構)。

有以下三個函式呼叫用於IPv4定址:

(1) int inet_aton(const char *strptr, struct in_addr *addrptr):
此函式呼叫指定的字串轉換,在網際網路標準點標記,一個網路地址,並儲存的地址提供的結構。轉換後的地址將是網路位元組順序(位元組下令從左至右)。這將返回1,如果字串是有效的和錯誤0。

以下是使用範例:

#include <arpa/inet.h>

(...)
    int retval;
    struct in_addr addrptr
    
    memset(&addrptr, '\0', sizeof(addrptr));
    retval = inet_aton("68.178.157.132", &addrptr); 

(...)

(2) in_addr_t inet_addr(const char *strptr):
此函式呼叫指定的字串轉換,在網際網路標準點標記,一個整數值,適合用作網際網路地址。轉換後的地址將是網路位元組順序(位元組下令從左至右)。這將返回一個32位元二進位制的網路位元組命令IPv4地址和INADDR_NONE的錯誤。

以下是使用範例:

#include <arpa/inet.h>

(...)

    struct sockaddr_in dest;

    memset(&dest, '\0', sizeof(dest));
    dest.sin_addr.s_addr = inet_addr("68.178.157.132"); 

(...)

(3) char *inet_ntoa(struct in_addr inaddr):
此函式呼叫指定Internet主機的地址轉換為一個字串在網際網路標準點標記。

以下是使用範例:

#include <arpa/inet.h>

(...)

	char *ip;

	ip=inet_ntoa(dest.sin_addr);

	printf("IP Address is: %s\n",ip);

(...)