本文参考自《Java高级程序设计》清华大学出版社,侵删
套接字用于区分网络上的两个程序之间的连接与通信。
在连接的两端分别有一个套接字。
套接字的通信处于比较低的层次,由用户编写的程序管理使用。
TCP/IP中通常包含三种套接字:
1.流套接字
用于提供面向连接、可靠的数据传输服务,保证数据能够实现无差错、无重复发送,并按顺序接受。
使用了传输控制协议TCP
2.数据报套接字(SOCK_DGRAM)
提供了一种无连接的服务,不能保证数据传输的可靠性。(需要在程序中做相应的处理)
使用UDP进行数据的传输
上面两种都是标准套接字
3.原始套接字
和标准套接字的区别:可以读写内核没有处理的IP数据包,而流套接字只能读取TCP的数据,数据报套接字只能读取UDP的数据
如果要访问其他协议发送的数据,必须使用原始套接字
Java提供多种套接字类,如用于流套接字的Socket、ServerSocket,用于数据报套接字的DatagramSocket、MulticastSocket。