首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从这个示例代码中获取libev远程ip地址?

从这个示例代码中获取libev远程ip地址?
EN

Stack Overflow用户
提问于 2013-01-26 08:29:04
回答 2查看 870关注 0票数 0

我正在尝试从以下链接学习libevent/libev (在本例中是libev):http://www.ibm.com/developerworks/aix/library/au-libev/

我想知道如何知道远程ip地址是什么,这样我就可以构建自己的DHT。

我猜想它与传入的结构有关,但我只是不知道。

下面是使用传入变量的回调代码,其余代码单击上面的链接。

代码语言:javascript
复制
void buf_read_callback(struct bufferevent *incoming,
                       void *arg)
{
  struct evbuffer *evreturn;
  char *req;

  req = evbuffer_readline(incoming->input);
  if (req == NULL)
    return;

  evreturn = evbuffer_new();
  evbuffer_add_printf(evreturn,"You said %s\n",req);
  bufferevent_write_buffer(incoming,evreturn);
  evbuffer_free(evreturn);
  free(req);
}

基本上,示例代码提供了一个由libev事件驱动的“服务器”,您可以通过发送服务器ip:port对来连接到服务器,它只会回显你对它说的所有内容--注意上面写着“您说了%s\n”的行

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-26 08:36:34

我会在调用accept()时存储远程地址,然后将其与新连接关联起来。但是,您也可以在回调中使用getpeername()。对于此,libev没有什么特别之处,只需使用FD编号,并像在C中一样进行网络编程。

票数 0
EN

Stack Overflow用户

发布于 2015-06-08 10:14:55

有这样的例子:

代码语言:javascript
复制
struct sockaddr_in ip_adr_get;
int ip_adr_len;

ip_adr_len = sizeof(ip_adr_get);
getpeername(fd, &ip_adr_get, &ip_adr_len);

printf("IP address is: %s\n", inet_ntoa(ip_adr_get.sin_addr));
printf("Port is: %d\n", (int) ntohs(ip_adr_get.sin_port));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14535214

复制
相关文章

相似问题

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