请问怎样获取本机的子网掩码

Rain 2005-09-17 11:29:01
请问怎样获取本机的子网掩码
...全文
205 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rain 2005-09-21
  • 打赏
  • 举报
回复
谢谢了,学习中
XBox360 2005-09-20
  • 打赏
  • 举报
回复
#include <Registry.hpp>

AnsiString GetSubnetMask()

{

AnsiString SubnetMask;

TRegistry *reg = new TRegistry;

DWORD Version = GetVersion();

if(Version < 0x80000000) //WindowsNT

{

reg->RootKey = HKEY_LOCAL_MACHINE;

if(reg->OpenKeyReadOnly("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Linkage"))

{

int BuffLength = reg->GetDataSize("Bind");

char *Buff = new char[BuffLength+1];

reg->ReadBinaryData("Bind",Buff,BuffLength);

AnsiString Interface = (AnsiString)Buff;

Interface = Interface.SubString(9,Interface.Length()-8);

delete [] Buff;

reg->CloseKey();



if(reg->OpenKeyReadOnly("SYSTEM\\CurrentControlSet\\Services\\"+Interface+"\\Parameters\\Tcpip"))

{

BuffLength = reg->GetDataSize("SubnetMask");

Buff = new char[BuffLength+1];

reg->ReadBinaryData("SubnetMask",Buff,BuffLength);

SubnetMask = (AnsiString)Buff;

delete [] Buff;

}

}

}

else //Windows9X

{

int i;

reg->RootKey = HKEY_LOCAL_MACHINE;

TStringList *ent = new TStringList;

if(reg->OpenKeyReadOnly("System\\CurrentControlSet\\Services\\Class\\NetTrans"))

reg->GetKeyNames(ent);

reg->CloseKey();

for(i=0;i<ent->Count ;i++)

{

reg->CloseKey();

if(reg->OpenKeyReadOnly("System\\CurrentControlSet\\Services\\Class\\NetTrans\\" +ent->Strings[i]))

{

AnsiString ip = reg->ReadString("IPAddress");

AnsiString node = reg->ReadString("NodeType");

if(ip != "0.0.0.0" && ip != "" && node == "1")

{

SubnetMask = reg->ReadString("IPMask");

if(SubnetMask != "" && SubnetMask != "0.0.0.0")

break;

}

}

}

delete ent;

}

delete reg;

return SubnetMask;

}
Rain 2005-09-20
  • 打赏
  • 举报
回复
再顶
Rain 2005-09-18
  • 打赏
  • 举报
回复
自己顶

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧