这些年,一直从事DLNA数字家庭网络的研发工作,却一直没有很好研究网络编程,接下来半年时间里打算认真
阅读Socket编程相关书籍,并记录下自己的一些感悟思考。
第一章首先回顾了Socket的由来。Socket的设计主要来自电话。
分析一下打电话的流程:
第一步: 发起端预先知道接收端的电话号码,并拨打对方号码。
第二步: 通过中继网络,将连接请求发送到接收端。
第三步: 接收方听到电话提示声音后拿起电话,并发送应答信号
第四步: 发起端接到回音信号,通信建立。
从上面可以看出: 一个通话过程有2个端, 并且目标端能通过网络寻找到。
引申到Socket, socket也是由(IP,Port)组成。IP地址用来寻找接收端。
不同的地方在于,电话只提供一种服务,而soecket为了提供多种服务,增加了port.
接下来,对比了管道(Pipe)和Socket的差别。
在Linux系统中,网络也是一种特殊的文件,所以,Socket也支持文件的一般操作(open,close,read,write)。
不过,由于是一种特殊的文件,并不支持lseek操作。
功能上的相同点:
管道(pipe)和Socket均不支持lseek