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