先来介绍下网络协议:
TCP/IP
Transmission Control Protocol 传输控制协议
Internet Protocol 互联网协议
UDP
User Datagram Protocol 用户数据协议
连接协议:
分为:
面向连接协议: Connection Oriented Protocol
非连接协议: Connectionless Protocol
1).面向连接协议是指两台电脑在传输数据前,先会建立一个专属的连接。就如电信局的交换机会为打电话双方提供专属连接一样。
Internet上的面向连接协议就是
TCP/IP
特点:确认回应;分组序号;流量控制。
TCP/IP属于可靠性传输,适合不容许有传输错误的网络程序设计使用
2).非连接协议:无专属连接,无分组,容错,距离短,可同时对多台电脑进行数据传输
Internet上的非连接协议就是
UDP
TCP在网络通信上有极强的生命力,例如远程连接(
Telnet
)和文件传输(
FTP
)都需要不定长度的数据被可靠地传输。相比之下
UDP
操作简单,而且仅需要较少的监护,因此通常用于局域网高可靠性的分散系统中
client/server
应用程序。
Socket 是程序与网络间的一种接口,大部分网络应用程序都是点对点的,所谓点就是服务器端和客户端所执行的程序。
Socket
是用来接收和传送分组的一个端点。
java的
Socket
编程要用到
java.net
包,最常用的是
net
包下的
6
个类:
InetAddress(
互联网协议
(IP)
地址
)
类,
Socket(
套接字
)
类,
ServerSocket(
套接字服务器
)
类,
DatagramSocket(
发送和接收数据报包的套接字
)
类,
DatagramPacket(
数据报包
)
类,
MulticastSocket(
多播数据报套接字类用于发送和接收
IP
多播包
)
类,其中
InetAddress
、
Socket
、
ServerSocket
类是属于
TCP
面向连接协议,
DatagramSocket
、
DatagramPacket
和
MulticastSocket
类则属于
UDP
非连接协议的传送类。
——From: http://cuishen.iteye.com/blog/242842
TCP 通信模型
Socket模型
示例代码:
UdpServer.java
UdpClient.java
TcpServer.java
TcpClient.java