Linux网络编程之阻塞与非阻塞

简介: Linux网络编程之阻塞与非阻塞

第1关:阻塞

#include <sys/socket.h> // 包含套接字函数库
#include <fcntl.h>
void setsocketblock(int socketID)
{
/*******Begin*********/
    int flags = fcntl (socketID, F_GETFL, 0);
    //检查当前属性是否为BLOCK,否则将其设置为BLOCK
    if (flags & O_NONBLOCK)
    {
        fcntl (socketID, F_SETFL, flags&~O_NONBLOCK);
        int recvTimeout = 5 * 1000;
        setsockopt(socketID,SOL_SOCKET,SO_RCVTIMEO,(char *)&recvTimeout,sizeof(int));
    }
/********End*********/
}


第2关:非阻塞

#include <sys/socket.h> // 包含套接字函数库
#include <fcntl.h>
void setsocketunblock(int socketID)
{
/*******Begin*********/
    int flags = fcntl (socketID, F_GETFL, 0);
    //检查当前属性是否为NON_BLOCK,否则将其设置为NON_BLOCK
    if (0 == (flags & O_NONBLOCK))
    {
        fcntl (socketID, F_SETFL, flags|O_NONBLOCK);
    }
/********End*********/
}


第3关:阻塞与非阻塞切换

#include <sys/socket.h> // 包含套接字函数库
#include <fcntl.h>
void setsocketunblock(int socketID)
{
/*******Begin*********/
    int flags = fcntl (socketID, F_GETFL, 0);
    //检查当前属性是否为NON_BLOCK,否则将其设置为NON_BLOCK
    if (0 == (flags & O_NONBLOCK))
    {
        fcntl (socketID, F_SETFL, flags|O_NONBLOCK);
    }
/********End*********/
}
void setsocketblock(int socketID)
{
/*******Begin*********/
    int flags = fcntl (socketID, F_GETFL, 0);
    //检查当前属性是否为BLOCK,否则将其设置为BLOCK
    if (flags & O_NONBLOCK)
    {
        fcntl (socketID, F_SETFL, flags&~O_NONBLOCK);
        int recvTimeout = 5 * 1000;
        setsockopt(socketID,SOL_SOCKET,SO_RCVTIMEO,(char *)&recvTimeout,sizeof(int));
    }
/********End*********/
}
目录
相关文章
|
1月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
72 2
|
3月前
|
安全 Linux 网络安全
Web安全-Linux网络协议
Web安全-Linux网络协议
80 4
|
1月前
|
域名解析 网络协议 安全
|
2月前
|
运维 监控 网络协议
|
1月前
|
存储 Ubuntu Linux
2024全网最全面及最新且最为详细的网络安全技巧 (三) 之 linux提权各类技巧 上集
在本节实验中,我们学习了 Linux 系统登录认证的过程,文件的意义,并通过做实验的方式对 Linux 系统 passwd 文件提权方法有了深入的理解。祝你在接下来的技巧课程中学习愉快,学有所获~和文件是 Linux 系统登录认证的关键文件,如果系统运维人员对shadow或shadow文件的内容或权限配置有误,则可以被利用来进行系统提权。上一章中,我们已经学习了文件的提权方法, 在本章节中,我们将学习如何利用来完成系统提权。在本节实验中,我们学习了。
|
2月前
|
Ubuntu Linux 虚拟化
Linux虚拟机网络配置
【10月更文挑战第25天】在 Linux 虚拟机中,网络配置是实现虚拟机与外部网络通信的关键步骤。本文介绍了四种常见的网络配置方式:桥接模式、NAT 模式、仅主机模式和自定义网络模式,每种模式都详细说明了其原理和配置步骤。通过这些配置,用户可以根据实际需求选择合适的网络模式,确保虚拟机能够顺利地进行网络通信。
108 1
|
2月前
|
网络协议 安全 Ubuntu
Linux中网络连接问题
【10月更文挑战第3天】
37 1
|
2月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控总结
Linux系统命令与网络,磁盘和日志监控总结
67 0
|
2月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控三
Linux系统命令与网络,磁盘和日志监控三
45 0
|
3月前
|
机器学习/深度学习 安全 网络协议
Web安全-Linux网络命令
Web安全-Linux网络命令
34 1
下一篇
DataWorks