100steps/Blogs

socket小科普

tugui opened this issue · 3 comments

tugui commented

先介绍一下什么是socket,它的英文翻译是套接字,用通俗的语言来理解,就是操作系统提供的一组接口,开发人员可以去调用它,来实现程序之间、或者程序与网络的通信——本质上说它是对TCP/IP协议的封装和应用。一般我们所说的socket编程,则是在Linux操作系统下的服务端软件开发,使用语言多为C,当然也可以用python之类的。常见的比如Apache、php-fpm、Memcached、Nginx、MySQL等都是通过这种方式写出来的,因为对外提供服务基本上要通过网络嘛。

实际上socket编程算是比较底层开发了,需要考虑多线程、内存管理、读写锁等等一系列问题,所以用C是比较合理的一种选择,当然代码量相对也比较庞大;另外一点就是,它是和各种协议密切相关的,特别是在通信方面,所以了解网络模型是学习socket编程的首要任务。

呃, 其实socket编程只是服务端软件开发的一部分,其它的逻辑实现还得另外写,既然大家都学过C语言我就不多说了。最后再解释一下,我以前讲过的监听端口,实际上就是通过socket相关函数来启动的,同理当你在访问某个端口的时候,就会触发相应的socket操作,以达到与程序通信的目的……比如获取网页的请求。

总的来说,学习socket编程可以加深你对诸如网络协议、通信模型等一系列概念的理解,也鼓励大家去看一看我刚才提到那些软件的源码哟(⊙o⊙)

以下是两个相关的资料,请自行阅读:
http://www.cnblogs.com/fuchongjundream/p/3914696.html
http://blog.csdn.net/hguisu/article/details/7445768/

PS:java有这方面的库可以用,所以也可以用它来开发相关的软件呢~详情请见:
http://www.cnblogs.com/linzheng/archive/2011/01/23/1942328.html

@100steps/bbter 测试at所有人

收到了

竟然收到了