1. UDP | 效率高 | 数据传输限制64KB之内 udp的发送端: 1,建立udp的socket服务,创建对象时如果没有明确端口,系统会自动分配一个未被使用的端口。 2,明确要发送的具体数据。 3,将数据封装成了数据包。 4,用socket服务的send方法将数据包发送出去。 5,关闭资源。 import java.net.*; class UdpSend{ public static voidmain(String[] args)throws Exception { // 1,建立udp的socket服务。 DatagramSocket ds = newDatagramSocket(8888);//指定发送端口,不指定系统会随机分配。 // 2,明确要发送的具体数据。 String text = "udp传输演示 哥们来了"; byte[] buf = text.getBytes(); // 3,将数据封装成了数据包。 DatagramPacket dp = new DatagramPacket(buf, buf.length,InetAddress.getByName("10.1.31.127"),10000); // 4,用socket服务的send方法将数据包发送出去。 ds.send(dp); // 5,关闭资源。 ds.close(); } } udp的接收端: 1,创建udp的socket服务,必须要明确一个端口,作用在于,只有发送到这个端口的数据才是这个接收端可以处理的数据。 2,定义数据包,用于存储接收到数据。 3,通过socket服务的接收方法将收到的数据存储到数据包中。 4,通过数据包的方法获取数据包中的具体数据内容,比如ip、端口、数据等等。 5,关闭资源。 class UdpRece { public static voidmain(String[] args) throws Exception{ // 1,创建udp的socket服务。 DatagramSocket ds = newDatagramSocket(10000); // 2,定义数据包,用于存储接收到数据。先定义字节数组,数据包会把数据存储到字节数组中。 byte[] buf = new byte[1024]; DatagramPacket dp = newDatagramPacket(buf,buf.length); // 3,通过socket服务的接收方法将收到的数据存储到数据包中。 ds.receive(dp);//该方法是阻塞式方法。 // 4,通过数据包的方法获取数据包中的具体数据内容,比如ip,端口,数据等等。 String ip =dp.getAddress().getHostAddress(); int port = dp.getPort(); String text = newString(dp.getData(),0,dp.getLength());//将字节数组中的有效部分转成字符串。 System.out.println(ip+":"+port+" 面向连接 | 安全行高 | DatagramPacket 数据包,发送封装包,接收要拆包 | getLength 获取字节数组的有效个数 | DatagramSocket 通信端 | send(数据包) 发送数据的 | 案例:多线程的聊天程序
4. TCP中的常用对象 | 构造 | getOutputStream()获取字节输出流,向服务器发送数据 | ServerSocket 服务器 | getInputStream()获取字节输入流,读取客户端发送的数据 | accept() 获取客户端的连接对象