本文共 2230 字,大约阅读时间需要 7 分钟。
【JavaSE】day16_UDP
package day07chat.udp;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;/** * 基于UDP通讯的客户端 */public class Client { public static void main(String[] args) { try{ /* * 1:创建Socket * 2:准备数据 * 3:准备地址(目标地址) * 4:将数据与地址设置到包中 * 5:通过Socket发送包 */ //1 java.net.DatagramSocket DatagramSocket socket = new DatagramSocket(); //2 String message = "你好,服务器!"; //将字符串按照UTF-8编码转换成为字节 byte[] data = message.getBytes("UTF-8"); //3 InetAddress address = InetAddress.getByName("localhost"); /* * TCP与UDP之间的端口是没有冲突的。 * 意思就是,若一个程序开启了TCP的8088端口,那么当前程序 * 打开UDP的8088端口时没有问题的,前提时没有程序占用UDP * 的8088端口. */ int port = 8088; //4 java.net.DatagramPacket //data:发送的数据对应的数组 //data.length:数组中有多少字节被发送 //address:远端计算机地址 //port:远端计算机端口号 DatagramPacket packet=new DatagramPacket(data,data.length,address,port); //5 socket.send(packet); //接收服务端的回复 //2 data = new byte[100]; packet = new DatagramPacket(data,data.length); //3 socket.receive(packet); //4 message = new String(data,0,packet.getLength(),"UTF-8"); System.out.println("服务端:"+message); }catch(Exception e){ } }}
package day07chat.udp;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;/** * 基于UDP通讯的服务端 */public class Server { public static void main(String[] args) { try{ /* * 1:创建Socket * 2:准备一个【接收包】 * 3:通过Socket接收数据并存入接收包中 * 这个过程做好后,包就有变化了: * 1)包中就有数据了 * 2)包就记录了数据从哪里来的 * 4:从包中取出数据使用. */ //1 DatagramSocket socket = new DatagramSocket(8088); //2 byte[] data = new byte[100]; DatagramPacket packet = new DatagramPacket(data,data.length); //3 socket.receive(packet); //4 String message = new String(data,0,packet.getLength(),"UTF-8"); System.out.println("客户端说:"+message); //回复客户端 //2 message = "你好,客户端!"; //将字符串按照UTF-8编码转换成为字节 data = message.getBytes("UTF-8"); //3 InetAddress address = packet.getAddress(); int port = packet.getPort(); //4 packet=new DatagramPacket(data,data.length,address,port); //5 socket.send(packet); }catch(Exception e){ } }}
转载地址:http://fgews.baihongyu.com/