ip地址的问题。

shiqingkun 2012-08-04 10:44:33
我写了个socket的客户端。。。在设置IP的时候是用


sockaddr_in RemoteAddr;
RemoteAddr.sin_addr.S_un.S_addr=inet_addr("192.168.1.99");
RemoteAddr.sin_family=AF_INET;
RemoteAddr.sin_port=htons(8080);


这样设置的是可以连接上服务器的。。但是我的服务器和客户端都在一台机器上。我想让他自动获取本机的IP地址。

用下面这2种方式的话都不能连接到服务器。。。本机的Ip地址是192.168.1.99

RemoteAddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

RemoteAddr.sin_addr.S_un.S_addr=INADDR_ANY;

求大神帮助。。。怎么样能让客户端自动获得本地。。。。
...全文
131 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
贵子潘 2012-08-05
  • 打赏
  • 举报
回复
INADDR_ANY是0,只在监听的时候使用,表示监听主机上的所有IP
你要想获得本机IP可以用gethostbyname或getaddrinfo

如果只是在本机测试,可以用INADDR_LOOP代替INADDR_ANY
MC_LoveX 2012-08-04
  • 打赏
  • 举报
回复
把IP改为127.0.0.1
shiqingkun 2012-08-04
  • 打赏
  • 举报
回复
我都设置过了。本地是在192.168.1.99

你让我测试本地是什么意思?
MC_LoveX 2012-08-04
  • 打赏
  • 举报
回复
本地测试127.0.0.1
titer1 2012-08-04
  • 打赏
  • 举报
回复
以上代码 用于vc.需要linux,是另外一套代码
titer1 2012-08-04
  • 打赏
  • 举报
回复
//Example: b1 == 192, b2 == 168, b3 == 0, b4 == 100
struct IPv4
{
unsigned char b1, b2, b3, b4;
};

bool getMyIP(IPv4 & myIP)
{
char szBuffer[1024];

#ifdef WIN32
WSADATA wsaData;
WORD wVersionRequested = MAKEWORD(2, 0);
if(::WSAStartup(wVersionRequested, &wsaData) != 0)
return false;
#endif


if(gethostname(szBuffer, sizeof(szBuffer)) == SOCKET_ERROR)
{
#ifdef WIN32
WSACleanup();
#endif
return false;
}

struct hostent *host = gethostbyname(szBuffer);
if(host == NULL)
{
#ifdef WIN32
WSACleanup();
#endif
return false;
}

//Obtain the computer's IP
myIP.b1 = ((struct in_addr *)(host->h_addr))->S_un.S_un_b.s_b1;
myIP.b2 = ((struct in_addr *)(host->h_addr))->S_un.S_un_b.s_b2;
myIP.b3 = ((struct in_addr *)(host->h_addr))->S_un.S_un_b.s_b3;
myIP.b4 = ((struct in_addr *)(host->h_addr))->S_un.S_un_b.s_b4;

#ifdef WIN32
WSACleanup();
#endif
return true;
}

//使用前,请确定机器上 几个网卡,安装有虚拟机没有(vmware ..)

64,701

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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