






package com.kuang.chat;
import java.io.*;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class TaskReceiver implements Runnable{
DatagramSocket socket = null;
DatagramPacket packet = null;
int port;
String name;
public TaskReceiver(int port,String name) throws SocketException {
this.name = name;
this.port =port;
socket = new DatagramSocket(port);
}
@Override
public void run() {
while(true){
byte[] buffer = new byte[1024];
packet = new DatagramPacket(buffer,0 ,buffer.length);
try {
socket.receive(packet);
String msg = new String(packet.getData(),0,packet.getLength());
System.out.println(name+":"+msg);
if (msg.equals("bye")){
break;
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
socket.close();
}
}
package com.kuang.chat;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.*;
import java.nio.file.StandardCopyOption;
public class TaskSender implements Runnable{
DatagramSocket socket = null;
DatagramPacket packet = null;
String toIp = null;
int toPort;
int fromPort;
BufferedReader bf;
public TaskSender(String toIp, int toPort, int fromPort) throws SocketException {
this.toIp = toIp;
this.toPort = toPort;
this.fromPort = fromPort;
socket = new DatagramSocket();
bf = new BufferedReader(new InputStreamReader(System.in));
}
@Override
public void run() {
while (true){
try {
String msg = bf.readLine();
packet = new DatagramPacket(msg.getBytes(),0,msg.getBytes().length, InetAddress.getByName(toIp),toPort);
socket.send(packet);
if(msg.equals("bye")){
break;
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
socket.close();
}
}
package com.kuang.chat;
import java.net.SocketException;
public class StudentDemo {
public static void main(String[] args) throws SocketException {
new Thread(new TaskSender("localhost", 9999, 1111)).start();
new Thread(new TaskReceiver(8888,"老師")).start();
}
}
package com.kuang.chat;
public class TeacherDemo {
public static void main(String[] args)throws Exception {
new Thread(new TaskSender("localhost", 8888, 1111)).start();
new Thread(new TaskReceiver(9999,"學生")).start();
}
}
package com.kuang.chat;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UdpReceiver {
public static void main(String[] args)throws Exception {
DatagramSocket socket =new DatagramSocket(6666);
byte[] buffer = new byte[1024];
DatagramPacket datagramPacket =new DatagramPacket(buffer,0,buffer.length);
socket.receive(datagramPacket);
System.out.println(new String(datagramPacket.getData(),0,datagramPacket.getLength()));
socket.close();
}
}
package com.kuang.chat;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UdpSender {
public static void main(String[] args)throws Exception {
DatagramSocket datagramSocket = new DatagramSocket();
byte[] buffer = new byte[1024];
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String msg = bf.readLine();
DatagramPacket datagramPacket = new DatagramPacket(msg.getBytes(),0,msg.length(), InetAddress.getLocalHost(),6666);
datagramSocket.send(datagramPacket);
}
}
package com.kuang.lesson04;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UdpServerDemo {
public static void main(String[] args) throws Exception{
DatagramSocket socket = new DatagramSocket(9090);
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);
socket.receive(packet);
System.out.println(packet.getAddress());
System.out.println(new String(packet.getData(),0,packet.getLength()));
socket.close();
}
}
package com.kuang.lesson04;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UdpClientDemo {
public static void main(String[] args)throws Exception {
InetAddress localhost = InetAddress.getLocalHost();
int port = 9090;
DatagramSocket socket = new DatagramSocket();
String msg = "你好";
DatagramPacket packet = new DatagramPacket(msg.getBytes(),0,msg.getBytes().length,localhost,port);
socket.send(packet);
socket.close();
}
}