使用来自libevent的inet_ntop

时间:2016-06-10 23:09:08

标签: c sockets libevent

我实现了libevent book中提供的echo服务器。

我修改accept_conn_cb函数,以便服务器打印新创建的连接的IPv4地址(以十进制数字表示法)。以下是我的回调

static void accept_conn_cb(
  struct evconnlistener *listener,
  evutil_socket_t fd, 
  struct sockaddr *address, 
  int socklen,
  void *ctx)
{
   char ipAddress[INET_ADDRSTRLEN];

   struct sockaddr_in * saddr_in = (struct sockaddr_in *) &address;

   if (!inet_ntop(AF_INET, &(saddr_in->sin_addr), ipAddress, INET_ADDRSTRLEN))
      puts("Couldn't retrieve IPv4 address");

   printf("A new connection established from %s\n", ipAddress);

   /* ... */

当我编译并运行它时,它总是打印下面的奇怪地址:

252.127.0.0

建立的新连接

253.127.0.0

建立的新连接

255.127.0.0

建立的新连接

无论我连接什么机器。我使用telnet来测试连接。

我编写了另一个用纯C编写的echo服务器版本(没有libevent)。当我运行它时,它总是返回正确的地址。

0 个答案:

没有答案