网络编程
码农小明
openHarmony多媒体领域开发者。
展开
-
Linux I/O 多路复用之select、poll、epoll详解与代码示例
如果写过最基础的TCP服务,那就应该清楚 accept 和 recv 函数是阻塞式的(默认),也就是说程序就卡在这个地方等待,直到有连接或者数据来到。如果不用多线程的话,一旦有数据到来就会一直处理这个连接的数据,而没法接收新的连接。其实操作系统可以在一个线程里轮询式处理这些事务,也就是常说的I/O多路复用。select,poll,epoll 都是I/O多路复用的机制。I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。s原创 2020-06-27 22:36:47 · 1988 阅读 · 2 评论 -
UDP Socket示例程序:使用fgets函数获取屏幕输入
前一篇文章的UDP Socket示例程序的Client是循环发送固定的一句话,有时候我们希望像聊天软件一样可以自己输入数据。读取屏幕字符串可以使用gets函数和fgets函数,然而因为安全方面的因素,推荐使用后者。 char *fgets(char *buf, int bufsize, FILE *stream);buf: 字符型指针,指向用来存储所得数据的地址bufsize: 整型数据,指原创 2016-11-27 14:28:48 · 725 阅读 · 0 评论 -
UDP Socket示例程序
通常我们涉及到的网络编程,也称为Socket编程,多数是TCP和UDP协议的编程,二者最大的区别就是:1. TCP是可靠的传输,需要三次握手建立连接再传数据,而UDP是无连接的,即使没有接收方,也可以一个劲往一个地址发数据,所以说是不可靠的传输模式。 2. TCP是基于流模式的,UDP是基于数据报模式的。因为UDP比TCP稍微简单一些,先介绍UDP编程模式。 从编程的角度来说,UDP Sock原创 2016-11-25 22:52:21 · 1044 阅读 · 0 评论 -
Unix I/O复用:select函数与poll函数详解与示例
先从一个简单的场景来理解什么叫I/O复用。学习过UNIX TCP网络编程的同学肯定知道accept和recv是阻塞的函数,accept函数是等待客户端连接,接受连接后返回,继续执行recv函数等待读取客户端发送过来的请求。但是如果一直没有客户端连接程序就会卡在accept函数上,连接后如果客户端没有数据发送就会卡在recv函数上,没法做别的事情。在处理一个客户端连接的时候也没法监听新的连接。也就是...原创 2018-07-22 02:10:38 · 443 阅读 · 0 评论