• network


    #include <sys/types.h>      
    #include <sys/socket.h>
    #include <fcntl.h>
    #include <unistd.h>
    #include <netinet/tcp.h>
    #include "server_network.h"
    
    int sock_setnonblock(sock_t s)
    {
        int flags = 0;
        flags = fcntl(s, F_GETFL);
        if (flags < 0)
            return flags;
        
        flags |= O_NONBLOCK;
        if (fcntl(s, F_SETFL, flags) < 0)
            return -1;
    
        return 0;
    }
    
    
    int sock_unsetnonblock(sock_t s)
    {
        int flags = 0;
        flags = fcntl(s, F_GETFL);
        if (flags < 0)
            return flags;
    
        flags &= ~O_NONBLOCK;
        if (fcntl(s, F_SETFL, flags) < 0)
            return -1;
    
        return 0;
    }
    
    
    int sock_setnodelay(sock_t s)
    {
        int flag =1;
        return setsockopt(s, SOL_TCP, TCP_NODELAY, (char *)&flag, sizeof(flag));
    }
    
    
    int sock_set_recv_timeout(sock_t s, int sec)
    {
        struct timeval timeout;
    
        timeout.tv_sec = sec;
        timeout.tv_usec = 0;
    
        return setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout,
                      sizeof(timeout));    
    }
    
    int sock_set_snd_timeout(sock_t s, int sec)
    {
        struct timeval timeout;
    
        timeout.tv_sec = sec;
        timeout.tv_usec = 0;
    
        return setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout,
                      sizeof(timeout));
    }
    
    
    int sock_set_keepalive(sock_t s, int timeout)
    {
        int val = 1;
        //设置成keepalive模式
        if (setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, &val, sizeof(val)) < 0) {
            return -1;
        }
        //设置探测时间
        val = timeout;
        if (setsockopt(s, SOL_TCP, TCP_KEEPIDLE, &val, sizeof(val)) < 0) {
            return -1;
        }
        //设置探测间隔时间,1s
        val = 1;
        if (setsockopt(s, SOL_TCP, TCP_KEEPINTVL, &val, sizeof(val)) < 0) {
            return -1;
        }
        //设置探测次数,3次
        val = 3;
        if (setsockopt(s, SOL_TCP, TCP_KEEPCNT, &val, sizeof(val)) < 0) {
            return -1;
        }
        return 0;
    }
  • 相关阅读:
    CVE-2017-12149JBoss 反序列化漏洞利用
    Exp4:恶意代码分析
    Exp3:MAL_免杀原理与实践
    Exp2:后门原理与实践
    Exp1 PC平台逆向破解
    20155212 2016-2017-2《Java程序设计》课程总结
    20155117王震宇实验五网络编程与安全
    20155117王震宇实验四 Andoid开发基础实验报告
    Exp9 Web安全基础
    Exp8 web基础
  • 原文地址:https://www.cnblogs.com/unixshell/p/3844922.html
Copyright © 2020-2023  润新知