首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取我的服务器程序的IP地址?

如何获取我的服务器程序的IP地址?
EN

Stack Overflow用户
提问于 2010-03-23 07:19:25
回答 1查看 508关注 0票数 3

此问题与another question I just posted相关。我正在准备一个简单的工作项目,并试图熟悉Unix开发环境中套接字编程的基础知识。现在,我已经完成了一些基本的服务器端代码和客户端代码设置,以便进行通信。目前,我的客户端代码成功地连接到服务器代码,服务器代码向它发送一条测试消息,然后两者都退出。太棒了!这正是我想要实现的。现在,我将尝试使用用于获取两个环境(服务器和客户端)信息的函数。我想获取我的服务器程序的IP地址。这是我目前需要做的代码,但它不能工作...

代码语言:javascript
复制
int sockfd;
unsigned int len;
socklen_t sin_size;
char msg[]="test message";
char buf[MAXLEN];
int st, rv;
struct addrinfo hints, *serverinfo, *p; 
struct sockaddr_storage client;
char s[INET6_ADDRSTRLEN];
char ip[INET6_ADDRSTRLEN];

//zero struct   
memset(&hints,0,sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_PASSIVE;

//get the server info
if((rv = getaddrinfo(NULL, SERVERPORT, &hints, &serverinfo ) != 0)){
  perror("getaddrinfo");
  exit(-1);
}

// loop through all the results and bind to the first we can
for( p = serverinfo; p != NULL; p = p->ai_next)
{
  //Setup the socket
  if( (sockfd = socket( p->ai_family, p->ai_socktype, p->ai_protocol )) == -1 )
  {
    perror("socket");
    continue;
  }

  //Associate a socket id with an address to which other processes can connect
  if(bind(sockfd, p->ai_addr, p->ai_addrlen) == -1){
    close(sockfd);
    perror("bind");
    continue;
  }

  break;
}

if( p == NULL ){
  perror("Fail to bind");
}

inet_ntop(p->ai_family, get_in_addr((struct sockaddr *)p->ai_addr), s, sizeof(s));
printf("Server has TCP Port %s and IP Address %s\n", SERVERPORT, s);

而IP的输出始终为空...

代码语言:javascript
复制
server has TCP Port 22513 and IP Address ::

你知道我错过了什么吗?

提前感谢您的帮助!这个东西一开始真的很复杂。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-23 07:39:04

您的套接字可能正在侦听所有可用的接口/地址。"::“是IPv6地址”0:0:0:0:0:0:0:0:0“的缩写,表示地址未指定。

这可能是因为您从getaddrinfo()请求一个addrinfo来监听任何地址,而任何支持流和具有未指定地址的IPv6的协议恰好是最先出现的。不过我对此有点不确定...

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2496454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档