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*********/
}
目录
相关文章
|
4月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
122 18
|
6月前
|
安全 Linux
【Linux】阻塞信号|信号原理
本教程从信号的基本概念入手,逐步讲解了阻塞信号的实现方法及其应用场景。通过对这些技术的掌握,您可以更好地控制进程在处理信号时的行为,确保应用程序在复杂的多任务环境中正常运行。
229 84
|
4月前
|
Linux 数据安全/隐私保护
使用Linux命令行接入无线网络Wi-Fi的示例。
现在,你已经使用命令行成功地连接到 Wi-Fi 网络了。这两个示例涵盖了用 `nmcli` 和 `wpa_supplicant` 连接无线网络的常见场景,让你能够不依赖图形化界面来完成这个任务。在日常使用中熟练掌握这些基本操作能增强你对 Linux 系统的理解,帮助你更有效地处理各种问题。
158 12
|
4月前
|
安全 Ubuntu Linux
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
134 0
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
|
6月前
|
Ubuntu Linux
Linux系统管理:服务器时间与网络时间同步技巧。
以上就是在Linux服务器上设置时间同步的方式。然而,要正确运用这些知识,需要理解其背后的工作原理:服务器根据网络中的其他机器的时间进行校对,逐步地精确自己的系统时间,就像一只犹豫不决的啮齿动物,通过观察其他啮齿动物的行为,逐渐确定自己的行为逻辑,既简单,又有趣。最后希望这个过程既能给你带来乐趣,也能提高你作为系统管理员的专业素养。
1003 20
|
6月前
|
JSON 运维 Ubuntu
Linux下如何使用Curl进行网络请求
希望这篇文章能帮助您在Linux下更好地使用Curl进行网络请求。如有疑问,请随时提问!
304 10
|
8月前
|
Linux 网络性能优化 网络安全
Linux(openwrt)下iptables+tc工具实现网络流量限速控制(QoS)
通过以上步骤,您可以在Linux(OpenWrt)系统中使用iptables和tc工具实现网络流量限速控制(QoS)。这种方法灵活且功能强大,可以帮助管理员有效管理网络带宽,确保关键业务的网络性能。希望本文能够为您提供有价值的参考。
1061 28
|
8月前
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
292 11
|
8月前
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
435 15

热门文章

最新文章