使用libuv编写了一个TCP服务器,它没有在正确的端口上侦听。
例如,应该在TCP端口3005上侦听以下内容,但根据在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
现在,它在正确的端口上侦听。
关于c - 基于libuv的tcp服务器未在指定端口上监听,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45656693/