一个套接字可以这样来解释:它是通过标准的UNIX 文件描述符和其他的程序通讯的一个方法。
使用UNIX 的黑客高手有这么一句话:“恩,在UNIX 系统中,任何东西都是一个文件。”这句话描述了这样一个事实:在UNIX 系统中,任何对I/O 的操作,都是通过读或写一个文件描述符来实现的。
一个文件描述符只是一个简单的整形数值,代表一个被打开的文件(这里的文件是广义的文件,并不只代表不同的磁盘文件,它可以代表一个网络上的连接,一个先进先出队列,一个终端显示屏幕,以及其他的一切)。在UNIX 系统中任何东西都是一个文件!!所以如果你想通过Internet 和另外一个程序通讯的话,你将会是通过一个文件来描述符实现的。你最好相信这一点。
套接字有三种类型:流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM)及原始套接字。
1.流式套接字
可以提供可靠的、面向连接的通讯流。
2.数据报套接字(SOCK_DGRAM)
数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错。原始套接字允许对低层协议如IP 或ICMP 直接访问,主要用于新的网络协议实现的测试等。
无连接服务器一般都是面向事务处理的,一个请求一个应答就完成了客户程序与服务
程序之间的相互作用。