TCP/IP协议的四层模型,从底层到高层分别是:网络接口层、网络层、传输层、应用层。IP属于网络层,TCP/UDP属于传输层。IP定位对方的主机名,端口号对应接受数据的应用程序。
本地回环地址:127.0.0.1 主机名:localhost 有效端口:0~65535, 其中0~1024为系统保留端口。
IP地址由InetAddress类表示。没有构造函数,通过静态方法得到实例。
UDP:将数据及源和目的封装成数据包,不需要建立连接;每个数据包的大小限制在64k内;因无连接,是不可靠协议;速度快。
TCP:建立连接,形成传输数据的通道;在连接中进行大量数据传输;通过三次握手完成连接,是可靠协议;必须建立连接,效率稍低。
Socket:网络之间的通信其实就是Socket之间的通信,Socket之间通过IO进行传输。
DatagramSocket:UDP使用的Socket接口,是本地的接口;发送、接受的单位为DatagramPacket。注意:这里DatagramPacket里面有get/setPort的操作,其中set为设置此包的目的端口号,而get有两种情况,一种是未发送的时候得到刚才set的端口号,一种是在接收端得到发送端的Socket的端口号(发送端DatagramePacket的设置的端口号)。所以getPort是Packet的得到Port的方法,而getLocalPort是Socket得到Port的方法。
测试UDP传输简单的数据:
1 package net;
2 import java.net.DatagramPacket;
3 import java.net.DatagramSocket;
4 import java.net.InetAddress;
5 //主线程为server端接受,子线程为client发送6 public class TestUDP {
7 public static void main(String[] args) {
8 //TODO Auto-generated method stub9 UDPClient udpClient = new UDPClient();
10 Thread t1 = new Thread(udpClient);
11 t1.start();
12 UDPServerFunc();
13 }
14 static void UDPServerFunc(){
15 try