概述 网络模型
网络通讯的要素
ip地址:网络中设备的标识符
端口:用于标识同一台设备上不同的进程,有效端口:0~65535,其中0~1024是系统使用端口或者保留端口
TCP与UDP
UDP特点:
面向无连接,速度快,不可靠
数据包中封装了数据、源和目的
每个数据报最大为64K
TCP特点:
面向连接,通过三次握手建立连接,,安全可靠
经常用于大数据的传输
Socket套接字
Socket就是为网络服务提供的一种机制
通信的两端都有Socket
网络通信其实就是Socket间的通信
数据在两个Socket间通过IO传输
UDP传输
DatagramSocket:UDP套接字
DatagramPacket:UDP数据报
下面是UDP实现的简单传输
1: import java.net.*; 2: import java.io.*; 3: 4: /* 5: 服务器读取键盘的数据,变成大写发送给客户端 6: */ 7: 8: class UdpServerDemo 9: {main(String[] args) throws Exception 11:{ 12://建立udp服务 13:DatagramSocket ds = new DatagramSocket(); 14: 15://建立键盘输入流 16:BufferedReader bufr = 17:new BufferedReader(new InputStreamReader(System.in)); 18: 19:String line = null; 20: 21:while( (line = bufr.readLine()) != null) 22:{ 23://定义数据包 24:byte[] data = line.toUpperCase().getBytes(); 25:InetAddress ia = InetAddress.getLocalHost(); 26:int port = 10000; 27:DatagramPacket dp = new DatagramPacket(data,data.length,ia,port); 28: 29://发送数据包 30:ds.send(dp); 31:} 32: 33://关闭资源 34://ds.close(); 35: 36:} 37: } 38: 39: class UdpClientDemo 40: {main(String[] args) throws Exception 42:{ 43://建立UDP服务 44:DatagramSocket ds = new DatagramSocket(10000); 45: 46://定义接收数据包[1024]; 48:DatagramPacket dp = new DatagramPacket(data,1024); 49: 50:while(true) 51:{ 52://接收数据包 53:ds.receive(dp); 54: 55://打印相关信息 56:System.out.println("Address:"+dp.getAddress().getHostAddress()+"—port:"+dp.getPort()); 57:System.out.println(new String(dp.getData(),0,dp.getLength())); 58:} 59: 60://关闭资源 61://ds.close(); 62: 63:} 64: }坚守自己的原则,世界上的诱-惑很多,