我想做个局域网通信的程序,程序启动时要能自动检测所有的网上邻居放入下拉列表框中,怎么实现?还有能不能同时发给内部网和外部网的机子,另外如果只知道对方的机器名,怎么获取其ip地址,怎样得到他的操作系统类型(怎样把信息发给Win98和Win2K?)—————————————————————————————————
┏━★━━◆━━★━┓ 
♂欢|◢CSDN◣|使♂        ▲自由保存帖子,浏览,关注检测
┃迎|◥论坛助手◤|用┃        ▲完善的CSDN客户端工具
┗━☆━━◇━━━☆┛       ▲自动添加签名......让你更快,更爽,更方便地上CSDN...
http://www.csdn.net/expert/topic/573/573604.xml
http://www.chinaok.net/csdn/csdn.zip

解决方案 »

  1.   

    http://walksea.myetang.com/program.htm
      

  2.   

    先给你解决一个问题先:
    用以下代码得到各机IP
    CString GetIp(CString strName)
    {
          WORD wVersionRequested;
          WSADATA wsaData;
          CString ip;
          PHOSTENT hostinfo;
          wVersionRequested = MAKEWORD( 2, 0 );      if ( WSAStartup( wVersionRequested, &wsaData ) == 0 )
          {
                      if((hostinfo = gethostbyname(m_strName)) != NULL)
                      {
                            ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
                      }
               
                
                WSACleanup( );
          } 
      return ip;
    }
    在你的程序初使化中枚举所有你局域网中的机器名,如有一机器叫sqa 则调用GetIp(sqa)可得到相应的IP地址, 如果返回值为空,则表示此机器未开机或是未能接入局域网 然后只要有返回值的, 就在列表框的构造中相应的AddString一下就成了
      

  3.   

    呵呵, 其实是解决了两了, 当然可以同时给网内跟网外的发的, 构造Tcp/ip上SOCKET的应用,有了ip地址, 剩下的就是侦听跟收发了, 或者不基于连接的发送, 用SendTo不管对方开机与否, 不过这样没法保证对方收到你发的东西.win2K可以调用系统服务 net send IP/机器名 "消息"
    98下的, 另做吧, 得到版本信息得调用一些api吧, 我没用过, 呵呵, 自己查查,:)
      

  4.   

    不尔兄:gethostbyname(m_strName)中的m_strName在哪定义的?