スポンサーリンク

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

クライアントのsockaddr_in からリアルホスト名を取得することが可能です。
libutilのrealhostname_sa()を使用します。
realhostname_sa()は、struct sockaddrからリアルホスト名をコンバートします。

C言語によるサンプルコード

#include <netdb.h>	// NI_MAXHOST

#include <libutil.h>	// realhostname_sa

int
server ( )
{
	struct sockaddr_in	cliaddr;
	socklen_t		len = 0;
	int			family	= AF_INET;
	int s = socket ();
	// ここらへんでソケットを作成する。

	for ( ; ; )
	{
		len = sizeof (cliaddr);
		int c = Accept (s, (SA *) & cliaddr, & len);

		char	remotehost[NI_MAXHOST];

		realhostname_sa(remotehost, sizeof(remotehost)-1,
				(struct sockaddr *)&cliaddr,
				((struct sockaddr *)&cliaddr)->sa_len);
		remotehost[sizeof(remotehost) - 1] = '\0';

		printf ("%s\n", remotehost);

		close (c);
	}

	return (0);
}

コンパイル方法


libutilをリンクする必要があるため、 -lutil をつけます。
cc -lutil server.c

NI_MAXHOST


#define NI_MAXHOST      1025

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


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

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

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入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー