zoukankan      html  css  js  c++  java
  • setsockopt

    setsockopt

    setsockopt()设置socket描述符的选项

    SO_REUSEADDR为1,表示允许创建端口号相同但IP地址不同的多个socket描述符。

    getsockopt,setsockopt - get and set options on sockets

    #include <sys/types.h>

    #include <sys/socket.h>

    int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);

    int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);

    1)服务器端允许占用尚未完全释放的端口:服务器进程关闭后,再启动bind错误,因占用同一端口(与连接socket)需等待2MSL时间。修改该选项,可立即重启服务器程序。

    int opt=1;

    setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));

    2)检测连接状态,在tcp连接的一瞬间可检测到。

    int check_tcp_connect(int sd, int sec)
    {
        int error = -1, len;
        int ret = 0;
        struct timeval tm;
    
        len = sizeof(int);
        fd_set set;
        tm.tv_sec = sec;
        tm.tv_usec = 0;
        FD_ZERO(&set);
        FD_SET(sd, &set);
        if(select(sd + 1, NULL, &set, NULL, &tm) > 0)
        {   
            getsockopt(sd, SOL_SOCKET, SO_ERROR, &error, (socklen_t *)&len);
            if(error == 0)
            {   
                ret = 1;
            }   
            else
            {
                printf( "Warnning: Tcp connect error:%d
    ", error);
                ret = 0;
            }
        }
        else
        {
            printf("Warnning: Wait TCP connect timeout!
    ");
            ret = 0;
        }
        return ret;
    }
  • 相关阅读:
    java之this关键字
    单位转换类UnitUtil2
    重量WeightFormatUtil辅助类
    语音提示辅助类MySoundAlertUtil
    Android 编程下 Touch 事件的分发和消费机制
    switch case语句的用法
    Struts2之环境配置
    CSS属性绘制图形(一)
    jquery $(document).ready() 与window.onload的区别
    Android开发之ActionBar
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/5003651.html
Copyright © 2011-2022 走看看