本篇文章给大家谈谈学习linux网络编程,以及Linux网络编程第2版pdf对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、linux编程书籍推荐linux编程书
- 2、linux网络编程socket介绍
- 3、linux网络编程,为什么要将文件描述符设置成非阻塞模式
- 4、linux网络编程中阻塞和非阻塞socket的区别
linux编程书籍推荐linux编程书
首先,对于初学者来说,《Linux命令行与shell脚本编程大全》是一本非常不错的入门书籍。这本书从基本的命令行操作开始,逐步引导读者深入了解Linux系统的各种功能和工具。
《CPrimerPlusC++PrimerPlus第五版中文版》此书也有英文版,比较经典的一本书,内容详细,知识涵盖广,就是比较厚,有耐力的话,推荐这本。
Linux程序设计.第3版 作者:(英)马修,(英)斯通斯著,陈健等译出版社:人民邮电出版社出版时间:2007年07月 它提供了一种理想的方式来阐明每个被介绍过的更高级的主题。
linux网络编程socket介绍
socket一般有两种模式:同步和异步(windows网络编程技术中也可叫锁定和非锁定,Linux网络编程叫阻塞和非阻塞)。socket的类型 socket一般有三种类型,基于TCP的流式套接字,基于UDP的数据报套接字和原始套接字。
Linux 网络编程是一个基于客户端/服务器(即:client/server)的套接字编程结构(即:socket 编程)。
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。
linux网络编程,为什么要将文件描述符设置成非阻塞模式
至于异步同步,我们常见的linux下的网络编程模型大部分都是同步io,以读操作为例,本质上都是需要用户调用read/recv去从内核缓冲区把数据读完再处理业务逻辑。异步io则是内核已经把数据读好了,用户直接处理逻辑。
就是fd(即文件描述符)。文件锁只是用于防止多个程序同时访问一个文件的冲突情况。Shell自动分配fd的话,原本就不会使用已被占用的fd,而是自动递增。这里显式指定fd为3(3mylockfile),是为了flock有操作的对象。
当程序打开一个文件时,内核就会向进程返回一个非负整数的文件描述符。但是文件描述符一般在unix,linux系统中才讲。
linux网络编程中阻塞和非阻塞socket的区别
非阻塞:非阻塞套接字是指执行此套接字的网络调用时,不管是否执行成功,都立即返回。比如调用recv()函数读取网络缓冲区中数据,不管是否读到数据都立即返回,而不会一直挂在此函数调用上。
也就是说,阻塞的socket使用read的时候,你都能保证读到数据包。而非阻塞就不一定了,所以往往非阻塞需要配合循环,不停的读,或者设置一个超时。如果读了几次,或者等待了多少秒没有读到,就超时。阻塞的,无法控制时间。
以linux下tcpsocket编程为例:阻塞就是recv/read的时候socket接收缓冲区要是有数据就读,没数据我就一直睡觉赖着不走,直到有数据来了读完我才走。
阻塞IO和非阻塞IO,主要区别在于第一个[_a***_]。也即是阻塞IO,在套接字缓冲区没准备好的情况下,会一直等待。而非阻塞IO,在套接字缓冲区没准备好时,会立即返回。
socket接收数据的另外一个函数recv则是一个阻塞调用的例子。当socket工作在阻塞模式的时候,如果没有数据的情况下调用该函数,则当前线程就会被挂起,直到有数据为止。
阻塞和非阻塞的区别:阻塞的话,读写操作完才返回,非阻塞,读写不等待完毕就返回。什么叫做操作完,具体的和系统有关系。
学习linux网络编程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux网络编程第2版pdf、学习linux网络编程的信息别忘了在本站进行查找喔。