網路套接字 位址轉換函式

2021-08-20 09:57:26 字數 1563 閱讀 4173

sockaddr_in中的成員struct in_addr sin_addr表示32位的ip位址,但是我們通常採用的是利用點分十進位制ide字串來表示ip位址,以下的函式可以在字串表示和in_addr表示之間的轉換。

字串轉in_addr的函式:

in_addr轉字串的函式

其中inet_ptoa和inet_ntop比較近可以轉換為ipv6的in6_addr,因此函式介面是void *addrptr。

**示例:

1

#include

2#include

3#include

4#include 56

int main()

7 15

執行的結果為:

關於inet_ntoa

inet_ntoa這個函式返回了乙個char* ,很顯然是這個函式自己在內部為我們申請了一塊記憶體來保持ip的結果,那麼是否需要呼叫者手動釋放呢?

我們通過查詢可以知道的是inet_ntoa函式將返回的結果放到了靜態儲存區。這個時候我們就不需要進行手動的釋放了。

那麼我們多次條用這個函式將會出現什麼樣的結果呢?

1

#include

2#include

3#include 45

6int main()

7

結果如下:

因為inet_ntoa把結果放到了自己的靜態儲存區,這樣我們在第二次條用的時候會覆蓋掉上一次的結果。

多執行緒呼叫inet_ntop**如下:

#include 

#include

#include

#include

#include

#include

void* func1(void* p)

return null;

}void* func2(void* p)

return null;

}int main()

執行結果:

我們看到的結果就是在使用的時候,這個inet_ntop在使用的時會比inet_ntoa好點,不會在多執行緒呼叫的時候出現異常的情況。

網路程式設計 套接字和位址函式 4

下面介紹一下對於網路程式設計中常用的介面 include 查詢繫結到套接字的位址 param socketfd in,要查詢的套接字 addr out,返回的位址以及埠資訊 len in,sockaddr大小 getsocketname int socketfd,struct sockaddr ad...

網路套接字函式

socket函式 include see notes include int socket int domain,int type,int protocol domain af inet這是大多數用來產生socket的協議,使用tcp或者udp來傳輸,用ipv4位址 af inet6與上面類似,不過...

網路程式設計 套接字函式

編寫乙個完整的tcp客戶 伺服器程式需要一些基本的套接字函式 下面依次介紹上圖中涉及的基本套接字函式 read 和write 在此不做複述 socket函式 為執行網路i o,首先要呼叫socket 函式指定期望的通訊型別 family 指定協議族 type 指定套接字型別 protocol 或為協...