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);

		}
	}
}

  

原文地址:https://www.cnblogs.com/tangjiang-code/p/7857992.html