TCP使用技巧

  1. SO_REUSEADDR

    一般来说,一个端口释放后会等待两分钟之后才能再被使用,SO_REUSEADDR是让端口释放后立即就可以被再次使用。
    SO_REUSEADDR用于对TCP套接字处于TIME_WAIT状态下的socket,才可以重复绑定使用。server程序总是应该在调用bind()之前设置SO_REUSEADDR套接字选项。TCP,先调用close()的一方会进入TIME_WAIT状态

    int reuse = 1;
    int rc = setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,(const void*)&reuse,sizeof(reuse));
    if( rc == -1 ) printf("can not set SO_REUSEADDR\n");
    
  2. SO_REUSEPORT

    是网络的一个选项设置,它允许多个进程/线程 bind/listen 相同的 IP/PORT,在 TCP 的应用中,它是一个新连接分发的负载均衡功能,它提升了新连接的分配性能(针对 accept )

    int reuse = 1;
    int rc = setsockopt(sock,SOL_SOCKET,SO_REUSEPORT,(const void*)&reuse,sizeof(reuse));
    if( rc == -1 ) printf("can not set SO_REUSEPORT\n");
    

你可能感兴趣的:(Linux网络,tcp/ip,网络,服务器)