[英]libuv : src port of response not same as port on which process is listening
[英]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,效果很好。
現在,它在正確的端口上偵聽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.