スポンサーリンク

このドキュメントの内容は、以下の通りです。

はじめに

インターネットでは、TCP/IPと呼ばれるプロトコルが利用されています。 インターネットで使われるネットワークソフトウェアでは、OS が提供する socket と呼ばれる仕組みを利用しています。

インターネットで通信するときには、いろいろなプロトコルが利用されています。たとえば、ブラウザでグーグルにアクセスするときには、 www.google.com といった名前が利用されています。この名前は、DNSと呼ばれる仕組みで、名前解決が行われ、はじめて、ブラウザは、グーグルのウェブサーバと通信ができます。

今回は、DNS を利用したプログラムを書く時に使われる、gethostbyname と呼ばれる関数について説明いたします。

gethostbynameの役割

gethostbyname()関数は、FQDNのホスト名のアドレス解決をしてホストのエントリー情報を取得します。
この関数は、エラーが起きた場合、errnoではなく、h_errnoにエラー番号をセットします。

サンプルコード

gethostbyname()の利用例を紹介いたします。
#include <netdb.h>
const char *hostname = "www.yahoo.co.jp";
struct hostent *h = gethostbyname (hostname);
if (h)
{
	servaddr.sin_family     = h->h_addrtype;
	(void) memcpy (& servaddr.sin_addr,
			h->h_addr_list[0],
			h->h_length);
} else {
	herror(hostname);
	exit (1);
}

ソケットの場合、エラーの表示は、 perror() ではなく、 herror() を利用することに注意してください。

memcpy()の代わりに、bcopy()でもできます。
bcopy (h->h_addr_list[0], (void *) & servaddr.sin_addr, h->h_length);

関連

[2008-07-01-1] socketプログラミング struct sockaddr_inのin_addrとは?
[2008-06-16-2] Socketプログラミング gethostbyname()
[2008-06-16-1] Socketプログラミング inet_pton

ソケットプログラミングの書籍を探す



参照しているページ (サイト内): [2008-07-02-1] [2008-06-16-2] [2008-06-16-1]

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー