读书人

求教查询主机上的WEB服务器所用的端口

发布时间: 2013-08-09 15:16:24 作者: rapoo

求教查询主机上的WEB服务器所用的端口
#include "stdafx.h"



int _tmain(int argc, _TCHAR* argv[])
{

WSADATA wsaData;//WSADATA结构体中主要包含了系统所支持的Winsock版本信息
struct servent *serventp = NULL;
char hostname[]="www.baidu.com";
struct hostent *htpp = NULL;
struct in_addr addr;//


/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////



if ( WSAStartup( MAKEWORD( 1,1 ), &wsaData ) != 0 ) //初始化Winsock 1.1
{
printf("WSAStartup:出错\n");
}
////////
///////套接字初始化必须成功地调用WSAStartup()
////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////


//取得本地http服务用的相关信息

///////////////////////////////////////////////////////////////////////////////////////////

if ( (serventp = getservbyname("http", NULL)) != 0 )
{
printf("正规的服务名:%s\n",serventp->s_name);
printf("连接该服务端口号:%d\n",htons(serventp->s_port));
printf("连接该服务协议名:%s\n",serventp->s_proto);

}


/////////////////////////////////////////////////////////////////////////////////////////


////网络主机的相关信息
//////////////////////////////////////////////////////////////////////////////////////////


if((htpp = gethostbyname(hostname)) != NULL)
{
printf("主机名:%s\n",htpp->h_name);

printf("主机别名:%s\n",htpp->h_aliases);

printf("主机ip地址的类型:%d\n",htpp->h_addrtype );

printf("主机ip地址的长度:%d\n",htpp->h_length);

printf("主机ip地址: %s,\n",inet_ntoa(*((struct in_addr *)htpp->h_addr)));//打印可以调用inet_ntoa()函数将其转换网络地址转换成“.”点隔的字符串格式。

}

///////////////////////////////////////////////////////////////////////////////////////////

//这里求教我要查询主机上的WEB服务器所用的端口
//但是Windows Sockets API没有支持C版查询端口的函数
//只有异步WSAAsyncGetServByName()函数,这函数如何用纯C来实现查询主机端口。


//新手第一次发贴


/////////////////////////////////////////////////////////////////////////////////////////
WSACleanup( );


return 0;
} C
[解决办法]
第一个参数 HWND hWnd 是一个Window(窗口)的句柄。
当WSAAsyncGetServByName 异步请求完成后,系统会向这个窗口发送通知消息。
Window可以用Win32 API CreateWindow/CreateWindowEx 来创建,也可以用MFC来创建。创建过程比较复杂,LZ需要查看很多资料。
[解决办法]
HWND hWndSock;
if (!(hWndSock = CreateWindow("STATIC", "MY-TEST", WS_OVERLAPPED,
0, 0, 0, 0,
HWND_MESSAGE, NULL,
NULL, NULL)))
return FALSE;

读书人网 >C语言

热点推荐