请问怎样获得IP

poloedq 2003-06-26 01:24:22
请问怎样获得本机的IP,计算机名?
又怎样获得已知IP的计算机名,或已知计算机名的IP
谢谢
...全文
84 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
GodBirdFlying 2003-06-26
  • 打赏
  • 举报
回复
取得本地internet机器的名字及IP地址
void __fastcall TForm1::Button1Click(TObject *Sender)
{
hostent *p;
char s[128];
char *p2;

//Get the computer name
gethostname(s, 128);
p = gethostbyname(s);
Memo1->Lines->Add(p->h_name);

//Get the IpAddress
p2 = inet_ntoa(*((in_addr *)p->h_addr));
Memo1->Lines->Add(p2);
}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
WORD wVersionRequested;
WSADATA wsaData;

//Start up WinSock
wVersionRequested = MAKEWORD(1, 1);
WSAStartup(wVersionRequested, &wsaData);
}

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
WSACleanup();
}
GodBirdFlying 2003-06-26
  • 打赏
  • 举报
回复
声明: 以上方法都是转载别人的帖子!!
yuanhen 2003-06-26
  • 打赏
  • 举报
回复


使用IP help api,但是这些API在cb6的帮助中是查不到的,在比较新的MSDN中可以查到。
都申明在iphlpapi.hpp这个文件中了。

你可以使用GetAdaptersAddresses得到本地的ip地址,你有几个网卡就能得到几个(包括虚拟的)。
GodBirdFlying 2003-06-26
  • 打赏
  • 举报
回复
char *IPAddr;
char name[65];
struct hostent *ph;
struct WSAData Data;

if (!WSAStartup(0x101,&Data)) {
memset(name, 0, sizeof(name));
gethostname(name, sizeof(name));
ph = gethostbyname(name);
if (ph != NULL) {
in_addr* addr = (in_addr*)ph->h_addr;
IPAddr = inet_ntoa(addr[0]); //返回 IP 地址
if (IPAddr != NULL)
MessageBox(0, IPAddr, "IP1", MB_OK);
IPAddr = inet_ntoa(addr[1]); //第2块网卡的IP地址
if (IPAddr != NULL)
MessageBox(0, IPAddr, "IP2", MB_OK);
}
WSACleanup();
}
GodBirdFlying 2003-06-26
  • 打赏
  • 举报
回复
在FastNet组的倒数第三个控件
动态得到IP:
#include "Psock.hpp"

TPowersock *powersock1=new TPowersock(this);
AnsiString IP=powersock1->LocalIP;
delete powersock1;
GodBirdFlying 2003-06-26
  • 打赏
  • 举报
回复
gethostname();//得到机器名
名字->IP
hostent *p;
p=gethostbyname(Name);//Name是名字,字符串,如www.sina.com.cn
if(p)
{
szip=inet_ntoa(*(LPIN_ADDR)*(p->h_addr_list));//szip就是IP地址了。
}

//**************************** 获取计算机名
LPTSTR lpBuffer;
DWORD nSize = 100;
lpBuffer = new char[100];
AnsiString ComputerName;
if(GetComputerName(lpBuffer,&nSize))
{
ComputerName = lpBuffer;
}
delete [] lpBuffer;
//****************************

wamlaw 2003-06-26
  • 打赏
  • 举报
回复
ping

ping -a

1,317

社区成员

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

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