首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-08-09 
求教查询主机上的WEB服务器所用的端口#include stdafx.hint _tmain(int argc, _TCHAR* argv[]){WSADATA

求教查询主机上的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;

热点排行