blog

枪手亨利

博客园 首页 新随笔 联系 订阅 管理
粗略如下:每台机子启动以后,广播他已经启动的消息,其他启动的机子通过他的数据包获得主机名和域名,同时标识其机。  
每台机子建立一个共享文件,记录本机的共享目录,其他网内主机发送请求后,由其权限发出共享目录名。  
然后...........  
 
用NetServerEnum  列出所有的server  
再用NetFileEnum枚举出所有的共享文件。  
 
void  EnumServer()  
{LPSERVER_INFO_100    pServerEnum;  
     DWORD      dwResult,  dwRead,  dwTotal;  
 
     dwResult  =  ::NetServerEnum(  NULL,  100,    
                                                 (BYTE**)  &pServerEnum,  
                                                   -1,  &dwRead,  &dwTotal,  
                                                 SV_TYPE_ALL,  NULL,  0  );  
                                                   
     if  (  dwResult  ==  NERR_Success  ){  
           for  (  DWORD  i=0;  i<dwRead;  i++  )  
                 m_wndListBox.AddString(  CString(  (LPCWSTR)  pServerEnum[  i  ].sv100_name  )  );  
     }  
}  
 
 
 
void  PrintNetFiles(LPWSTR  server)  
{  
 
 resumeh  =  0;  
 do  
 {  
   buff  =  NULL;  
 
   rc=NetFileEnum(  
     (char  *)  server,  
     NULL,  
     NULL,  
     3,  
           (BYTE**)&buff,  
     2048,  
     &read,  
     &total,  
     &resumeh  );  
 
 
   if  (  rc  !=  ERROR_MORE_DATA  &&  rc  !=  ERROR_SUCCESS  )  
     break;  
 
 
   for  (  i  =  0,  curf  =  buff;  i  <  read;  ++  i,  ++  curf  )  
   {  
     printf(  "%-12S  %-15S    \n",  
       curf->fi3_username,  curf->fi3_pathname  
       );  
 
   }  
   if  (  buff  !=  NULL  )  
   NetApiBufferFree(  buff  );  
 
 }  while  (  rc  ==  ERROR_MORE_DATA  );  
 
   if  (  rc  !=  ERROR_SUCCESS  )  PrintError(  rc  );  
 
}  
 
 
netbios  api  
 
共享文件需要用户名和密码  
DWORD  WNetAddConnection2(  
   LPNETRESOURCE  lpNetResource,    //  connection  details  
   LPCTSTR  lpPassword,                      //  password  
   LPCTSTR  lpUsername,                      //  user  name  
   DWORD  dwFlags                                  //  connection  options  
);
posted on 2005-03-14 11:20  henry  阅读(1056)  评论(0编辑  收藏  举报