基于UDP的echo服务器:
- 客户端向服务器发送字符串
- 服务器接收客户端发送的字符串
- 服务器向客户端发送接收到的字符串
- 如果客户端发送字符串“bye”,客户端就结束运⾏
public class echoServerUDP {
public static void main(String [] args) {
try {
int port = 13;
DatagramSocket serverSocket = new DatagramSocket(port);
byte b[] = new byte[1024];
DatagramPacket recvPkt = new DatagramPacket(b,b.length);
while (true) { // 完成⼀次连接会话后,再次等待新的连接
serverSocket.receive(recvPkt);
String recvStr = new String(recvPkt.getData(),0,recvPkt.getLength());
//
if ("bye".equals(recvStr)) {
System.out.println("断开连接");
break;
} else {
String echo = "echo:" + recvStr;
DatagramPacket sendPkt = new DatagramPacket(echo.getBytes(), echo.length(), recvPkt.getSocketAddress());
serverSocket.send(sendPkt);
System.out.println(echo.toString());
System.out.println("----------------");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class echoClientUDP {
public static void main(String [] args) {
try {
int n = 5;
int port = 13;
String ipaddr = "127.0.0.1";
DatagramSocket clientSocket = new DatagramSocket();
InetSocketAddress sockAddr = new InetSocketAddress(ipaddr, port);
while (n > 0) {
//从键盘接收字符串
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入信息:");
String str = in.readLine();//执行键入动作,存入s
DatagramPacket udpPkt = new DatagramPacket(str.getBytes(),str.length(),sockAddr);
clientSocket.send(udpPkt);
//接收服务器的echo
if ("bye".equals(str)) {
System.out.println("断开连接");
break;
} else {
byte buf[] = new byte[1024];
DatagramPacket echo = new DatagramPacket(buf,buf.length);
clientSocket.receive(echo);
System.out.println(new String(echo.getData(),0,echo.getLength()));
System.out.println("----------------");
}
n--;
}
clientSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}