ページ 11

c言語の"汎用"という意味について

Posted: 2017年4月03日(月) 13:14
by koudaill
初めて投稿させていただくので、至らぬところがあったらすみません。
最近、TCPなどのネットワークプログラミングについて勉強しているのですが、
そのなかで例えば、struct sockaddrという汎用型のデータ構造がある、という記述を見ました

ここでいう"汎用"とは、どういうことなのでしょうか?一般に"汎用"とは、いろいろに応用が効く、
のような意味だと認識していますが、なぜわざわざ"汎用"と言うのでしょうか?
汎用ではないデータ構造が存在しているなら、それらを区別するために明記するためだったら
分かるのですが。

参考url:http://capm-network.com/?tag=C言語-ソケットプログラミング

Re: c言語の"汎用"という意味について

Posted: 2017年4月04日(火) 01:31
by tk-xleader
ここでの「汎用」の意味は、おそらくソケットのプロトコルレベルでの汎用性のことではないでしょうか。例えばですが、TCPとUDPとではsockaddrの意味が異なるはずですが、いずれもsockaddrで表せるデータ構造になっている、ということだと思います。つまり、プロトコル間に共通のデータ構造という意味です。

[訂正]
TCP/IPとUDP/IPではいずれもsockaddr_inを使うので同じのようです。sockaddrの派生形としては次のようなものがあるみたいです。
sockaddr_in IPv4通信用。
sockaddr_in6 IPv6通信用。
sockaddr_un Unixドメイン通信用。
sockaddr_storage 長さ不明時用。
出典: http://www.coins.tsukuba.ac.jp/~syspro/ ... kaddr.html

Re: c言語の"汎用"という意味について

Posted: 2017年4月04日(火) 17:14
by koudaill
御回答ありがとうございます。
確かに、struct sockaddr_inなどはstruct sockaddrにキャストするので、回答者様の通りだと分かりました。ありがとうございます。