UDP协议实现客户服务器数据交互
UDP协议实现客户服务器数据交互
按照往常一样将今天自己写的题目答案写在了博客上
习题:
客户端循环发送消息给服务端,服务端循环接收,并打印出来,直到收到Bye就退出程序。
package network; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.util.Scanner; /** * 使用udp协议实现的客户端 * * @author TangJiang 2017年11月18日 下午5:17:55 * */ public class Client { public static void main(String[] args) throws Exception { // 创建客户端键盘输入对象 Scanner s = new Scanner(System.in); // 创建客户端 InetSocketAddress client = new InetSocketAddress(10086); // 创建服务端 InetSocketAddress server = new InetSocketAddress("127.0.0.1", 10010); // 创建快递员 DatagramSocket socket = new DatagramSocket(); while (true) { // 获得键盘录入的字符串 String str = s.nextLine(); if (str.equalsIgnoreCase("Bye")) { break; } else { // 创建数据包 DatagramPacket packet = new DatagramPacket(str.getBytes(), str.getBytes().length, server); // 发送数据 socket.send(packet); } } // 关闭soket服务 socket.close(); } }
package network; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; /** * 使用udp协议实现服务端接收数据 * * @author TangJiang 2017年11月18日 下午5:28:32 * */ public class Server { public static void main(String[] args) throws Exception { // 创建收件方地址 InetSocketAddress server = new InetSocketAddress(10010); // 快递员 DatagramSocket socket = new DatagramSocket(server); while (true) { // 创建一个新的字节数组接收数据包 byte[] bs = new byte[1024]; // 创建数据包 DatagramPacket packet = new DatagramPacket(bs, bs.length); // 接收数据 socket.receive(packet); // 处理收到的数据,将字节转换可读的字符串形式 String str = new String(bs); System.out.println("收到消息:" + str); } } }