您的位置:首页 > 其它

如何用API函数实现网上邻居的功能?

2005-03-14 11:20 381 查看
粗略如下:每台机子启动以后,广播他已经启动的消息,其他启动的机子通过他的数据包获得主机名和域名,同时标识其机。
每台机子建立一个共享文件,记录本机的共享目录,其他网内主机发送请求后,由其权限发出共享目录名。
然后...........

用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
);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: