0

unixhostnameプログラムは、「本当の」ホスト名 (localhost ではありません。たとえば、現在は ですunknown74e5[...]df7.att.net) を取得するための非常に簡単な方法を提供してくれます。しかし、C システム コールを使用して自分のコード内でこれを行うにはどうすればよいでしょうか。char *などに渡すことができるように、この文字列を含む を取得したいと思いgethostbynameます。

私がそれに取り組んでいる間、プログラム(またはさらに悪いことに、whatismyip.com)に頼るのではなく、UNIXシステムコールでIPアドレスを取得する方法も知りたいです...

ありがとう!

4

2 に答える 2

1

uname(2)これを使用するstruct utsnameと、情報がいっぱいになります。あなたが興味を持っているnodename

struct utsname {
    char sysname[];    /* Operating system name (e.g., "Linux") */
    char nodename[];   /* Name within "some implementation-defined network". */

uname関数と構造体も POSIX で言及されており、utsname事実上すべてのプラットフォームで使用できます。Thomas がコメントで言及しているように、glibc はgethostnameへの呼び出しとして実装されていますuname(2)

于 2013-04-08T11:21:33.613 に答える