回答編集履歴
1
アドレスファミリは共通していました、失礼しました
answer
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
> sa_dataにIPアドレスを指定できないのでしょうか?
|
2
2
|
|
3
|
-
`sockadrr_in`の場合はデータ領域が足りるので、できなくはないですが、`addr.
|
3
|
+
`sockadrr_in`の場合はデータ領域が足りるので、できなくはないですが、`addr.sin_port = htons(port);`のような代入は不可能です。自分でバイト数を数えて正しい位置にデータを書き込む必要が出てきます。
|
4
4
|
|
5
5
|
一方で、IPv6用の`sockaddr_in6`やUnixドメインソケット用の`sockaddr_un`は、`sockaddr`よりデータ量が多いので、`sockaddr`で宣言すると**メモリが不足します**([参考](http://www.coins.tsukuba.ac.jp/~syspro/2012/2012-05-23/sockaddr.html))。ただ、これらの`sockaddr_*`構造体は、すべて先頭が「構造体の長さ」と「アドレスファミリ」で始まるという部分は共通していますので、`sockaddr`にキャストしても先頭部には共通してアクセスが可能です。
|