繁体   English   中英

基于libuv的tcp服务器未在指定端口上侦听

[英]libuv based tcp server not listening on specified port

使用libuv编写了一个TCP服务器,它没有在正确的端口上侦听。 例如,以下内容应该在TCP端口3005上侦听,但是根据命令netstat -antp | grep LISTEN的输出,它似乎在随机端口上netstat -antp | grep LISTEN 在Ubuntu 14.04上运行的netstat -antp | grep LISTEN 我不是端口3005不被占用。

知道为什么吗?

#include <stdio.h>
#include <stdlib.h>
#include <uv.h>
#define DEFAULT_PORT 3005
#define DEFAULT_BACKLOG 1000
uv_loop_t *loop;

void on_new_connection(uv_stream_t *server, int status) {
}
int main() {
    loop = uv_default_loop();

    uv_tcp_t server;
    uv_tcp_init(loop, &server);

    struct sockaddr_in addr;
    uv_ip4_addr("0.0.0.0", DEFAULT_PORT, &addr);
    int r;
    r = uv_tcp_bind(&server, (const struct sockaddr*)&addr, 0);
    r = uv_listen((uv_stream_t*) &server, DEFAULT_BACKLOG, on_new_connection);
    if (r) {
        fprintf(stderr, "Listen error %s\n", uv_strerror(r));
        return 1;
    }
    return uv_run(loop, UV_RUN_DEFAULT);
}

原来,ubuntu 14.04的默认libuv-dev版本为0.10。 运行以下步骤来安装最新的libuv,效果很好。

  • 须藤apt-get清除libuv-dev
  • 选择目录以执行以下步骤
  • git clone https://github.com/libuv/libuv.git
  • 光盘库
  • 。/配置
  • 使
  • 须藤使安装
  • gcc libuv_example.c -luv

现在,它在正确的端口上侦听。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM