« リコーCaplio GX100買っちゃいました | トップページ | レッツノート買っちゃいました »

2007年5月 4日 (金)

IP Messengerユーザーを探す

技術系の職場などで、IP Messengerを使用されている方ってきっと多いと思います。
そんななか、ネットワークセグメントが異なるところでIP Messengerを探したいと思った場合、とりあえず標準のポート"2425"を叩いてみると良いかと思います。

以下は、Cygwinベースのgccでビルドして動作しましたが、Linuxベースでも動作するでしょう。
とはいえ、これを実行してネットワーク管理者におこられても、責任もてません。
(私には実行できません^^;)

しかし、以下、インデントが全て失われてしまった。
うまい貼り付け方法見つけないと。

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>

#define IPMSG_PORT 2425

void IPF_SearchAndDisplay(int ip[4]);


int main(int argc,char** argv)
{
int ip[4];
int i;
char ipstr[128];

printf("Input ip address : ");
scanf("%d %d %d",&(ip[0]),&(ip[1]),&(ip[2]));
for(i=2;i<=254;i++){
ip[3] = i;
IPF_SearchAndDisplay(ip);
}

}

void IPF_SearchAndDisplay(int ip[4])
{
int result;
struct sockaddr_in dstAddr;
int dstSocket;
char ipstr[128];

sprintf(ipstr,"%d.%d.%d.%d",ip[0],ip[1],ip[2],ip[3]);

memset(&dstAddr,0,sizeof(dstAddr));
dstAddr.sin_port = htons(IPMSG_PORT);
dstAddr.sin_family = AF_INET;
dstAddr.sin_addr.s_addr = inet_addr(ipstr);

dstSocket = socket(AF_INET,SOCK_STREAM,0);

result = connect(dstSocket,(struct sockaddr*)&dstAddr,sizeof(dstAddr));
close(dstSocket);

printf("[%3d.%3d.%3d.%3d] %s\n",ip[0],ip[1],ip[2],ip[3],result == 0 ? "Available" : "Unavailable");
}

|

« リコーCaplio GX100買っちゃいました | トップページ | レッツノート買っちゃいました »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/18774/14943619

この記事へのトラックバック一覧です: IP Messengerユーザーを探す:

« リコーCaplio GX100買っちゃいました | トップページ | レッツノート買っちゃいました »