知道计算机名和IP地址,怎么得到该用户所在局域网中的工作组名? hostentgethostbyaddr?还是什么 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 获得远程机器名和工作组名代码如下。楼主可参考用UDP协议,向对方的137端口发送这一串:BYTE bs[50]={0x0,0x00,0x0,0x10,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x43,0x4b,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x0,0x0,0x21,0x0,0x1};然后接收500个字节的数据,就什么都有啦,比如对方网卡序列号,当前用户,工作组,机器名等,接收到后的分析代码如下:这个代码在VC知识库里有,void CNBTSTATDlg::OnReceive(){ BYTE Buf[500]; //m_UDPSocket.Receive(Buf,500,0); CString str,strIP,strHost,strHex,strMac,Host,Group,User; UINT dport; m_UDPSocket.ReceiveFrom(Buf,500,strIP,dport,0); if(strIP==(char)NULL||strIP==strOldIP)return; strOldIP=strIP; int index=m_ListView.InsertItem(0,strIP); strHost=""; strHex=""; User="?"; Host="\\"; int tem=0,num=0; bool bAdd=true; //if(m_strIP==strIP) for(i=57;i<500;i++) //57-72 { if(Buf[i]==0xcc)break; if(Buf[i]==0x20)bAdd=false; if(bAdd) { str.Format("%c",Buf[i]); if(Buf[i]>=' ')strHost+=str; str.Format("%02x.",Buf[i]); strHex+=str; } if((++tem)%18==0) { bAdd=true; //m_ListBox.AddString(strHost);// strHost.TrimRight((char)NULL); if(strHost=="") { strMac.Delete(17,strMac.GetLength()-17); m_ListView.SetItem(index,4,LVIF_TEXT,strMac, 0, 0, 0,0); break; } if(num==0&&strHost!="") { m_ListView.SetItem(index,2,LVIF_TEXT,strHost, 0, 0, 0,0); Host=strHost; num++; } else { if(Host!=strHost&&num==1&&strHost!="") { m_ListView.SetItem(index,1,LVIF_TEXT,strHost, 0, 0, 0,0); Group=strHost; //AfxMessageBox(strHost); num++; } else { if(strHost!=Host&&strHost!=Group&&num==2&&strHost!="") { User=strHost; if(User!="__MSBROWSE__") { m_ListView.SetItem(index,3,LVIF_TEXT,User, 0, 0, 0,0); num++; } //num++; } } } strMac=strHex; strHost=""; strHex=""; } } SetEvent(wait_handle); } 如何在vc6.0下实现自动捕捉其他窗口的确定按钮? Release版的程序与Debug的程序的问题 如何重载MFC ActiveX暴露的接口,谢谢大虾们! 基础问题:怎用通过指针引用一个二维数组?:( 如何使一个CDialog类的窗口总位于其他窗口的最上面 该选用什么样的数据库? 怎么才可以在98下指定某个文件删不掉?谢谢。 用Ole DB如何连接sybase? 打开带滚动条的文档,当滚动条滚动时闪烁为什么? 大家解释解释unicode,UTF-8等编码格式的区别! VC爱好者的群2345411 mfc程序打包,用什么工具好?请大家给意见(急)
BYTE bs[50]={0x0,0x00,0x0,0x10,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x43,0x4b,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x0,0x0,0x21,0x0,0x1};
然后接收500个字节的数据,就什么都有啦,比如对方网卡序列号,当前用户,工作组,机器名等,接收到后的分析代码如下:这个代码在VC知识库里有,
void CNBTSTATDlg::OnReceive()
{
BYTE Buf[500];
//m_UDPSocket.Receive(Buf,500,0); CString str,strIP,strHost,strHex,strMac,Host,Group,User;
UINT dport;
m_UDPSocket.ReceiveFrom(Buf,500,strIP,dport,0); if(strIP==(char)NULL||strIP==strOldIP)return;
strOldIP=strIP; int index=m_ListView.InsertItem(0,strIP); strHost="";
strHex="";
User="?";
Host="\\";
int tem=0,num=0;
bool bAdd=true; //if(m_strIP==strIP)
for(i=57;i<500;i++) //57-72
{
if(Buf[i]==0xcc)break;
if(Buf[i]==0x20)bAdd=false;
if(bAdd)
{
str.Format("%c",Buf[i]);
if(Buf[i]>=' ')strHost+=str; str.Format("%02x.",Buf[i]);
strHex+=str;
} if((++tem)%18==0)
{
bAdd=true;
//m_ListBox.AddString(strHost);//
strHost.TrimRight((char)NULL);
if(strHost=="")
{
strMac.Delete(17,strMac.GetLength()-17);
m_ListView.SetItem(index,4,LVIF_TEXT,strMac, 0, 0, 0,0);
break;
}
if(num==0&&strHost!="")
{
m_ListView.SetItem(index,2,LVIF_TEXT,strHost, 0, 0, 0,0);
Host=strHost;
num++;
}
else
{
if(Host!=strHost&&num==1&&strHost!="")
{
m_ListView.SetItem(index,1,LVIF_TEXT,strHost, 0, 0, 0,0);
Group=strHost;
//AfxMessageBox(strHost);
num++;
}
else
{
if(strHost!=Host&&strHost!=Group&&num==2&&strHost!="")
{
User=strHost;
if(User!="__MSBROWSE__")
{
m_ListView.SetItem(index,3,LVIF_TEXT,User, 0, 0, 0,0);
num++;
}
//num++;
}
} }
strMac=strHex;
strHost="";
strHex="";
}
}
SetEvent(wait_handle);
}