学用C++进行Winsock编程(三)──Client端 朱小华 2001年 3期 CloseHandle(hMutex);    closesocket(sk);    return 1;    }    /*这是一个既可以将IP地址转换成网际地址,又可以将用域名表示的地址转换成网际地址的函数──ServerIp*/    unsigned long ServerIp(charserverip)    {    hostent*host;    unsigned long ulTemp=inet_addr(serverip);    if(ulTemp==INADDR_NONE)/*如果不能用inet_addr转换成网际地址,则表示这是一个用域名表示的地址*/    {    host=gethostbyname(serverip);    if(host==NULL)return INADDR_NONE;//无效的地址    ulTemp=*((unsigned long*)host→h_addr_list[0]);    }    return ulTemp;    }    /*调用方法为:*/    unsigned long Ip=ServerIp(“202.205.210.2”);    也可以是:    unsigned long Ip=ServerIp(“www.cfan.cn.net”);    /*总之,只要是一个有效的地址,这个函数就会返回网际地址,如果所给地址无效,则返回INADDR_NONE;*/    //以下是窗体的构造函数    _fastcall TForLover::TForLover(TComponent* Owner)    :TForm(Owner)    {    WSADATA wsaData;    if(WSAStartup(0x101,&wsaData))MessageBox(NULL,“WINSOCK版本不行”,“错误”,MB_OK);    }    /*单击按钮,开始扫描*/    void _fastcall TForLover::Button1Click(TObject*Sender)    {    HANDLE hMutexHandle=CreateMutex(NULL,false,mutexName);    try    {    int Result=0,    startPort=PortStart→Text.ToInt()-1    endPort=PortEnd→Text.ToInt();    char szResult[56];    ZeroMemory(gscan,sizeof(g_scan)*threadNum);    usPart=(unsigned short)(endPort-startPort)/threadNum;    Button1→Enabled=false;    Application→ProcessMessages();    for(int i=0;i