2012-11-24 58 views
1

我現在瞭解套接字,我看到有兩個結構 Sockaddr和sockaddrin。鑄造結構如何工作?

該指南聲稱在結構中包含帶8個字符的char來將一個結構與另一個結構進行比較我不明白它的工作如何解釋我?

它像鑄造int到char [2]?

它如何與結構一起工作?

謝謝。

+1

您是否在談論Beej的網絡編程指南? – Xymostech

+0

是的,他沒有解釋它 – user1809399

回答

2

SOCKADDR是一個通用結構,它包含ADDRESS_FAMILY字段,然後在該字段後面包含14個字節(類型爲char)。根據sin_family字段(ADDRESS_FAMILY)的值,接下來的14個字節將被解釋爲不同。

當sin_family值等於AF_INET,則SOCKADDR結構確實是一個SOCKADDR_IN結構,這只是表示14個字節真的應該被解釋爲:

2個字節用於sin_port 4個字節用於sin_addr 8字節未使用但必須在那裏才能使其與SOCKADDR結構具有相同大小的填充。所以如果你有一個指向SOCKADDR的指針,並且你檢查了sin_family字段並且它等於AF_INET,那麼你可以把你的指針轉換成一個指向SOCKADDR_IN的指針並訪問這些字段。

+0

第一個謝謝你第二次從頂部開始我的意思是地址家族的前兩個特徵被轉換爲sin_port4等等? – user1809399