簡體   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