废话就不多说了,直接上demo,使用带来来进行了解
public class TaleTeceive implements Runnable {
DatagramSocket datagramSocket = null;
private String msgFrom;
public TaleTeceive(int formPort,String msgFrom) throws SocketException {
this.datagramSocket = new DatagramSocket(formPort);
this.msgFrom = msgFrom;
}
@Override
public void run() {
try{
//准备接收的包裹
byte [] bytes = new byte[1024];
while (true){
DatagramPacket datagramPacket = new DatagramPacket(bytes,0,bytes.length);
datagramSocket.receive(datagramPacket);
//断开连接
byte [] data = datagramPacket.getData();
String date = new String(data,0,data.length);
System.out.println(msgFrom+":"+date);
if(date.trim().startsWith("bye")){
break;
}
}
}catch (Exception e){
e.printStackTrace();
}finally {
if(datagramSocket != null)
datagramSocket.close();
}
}
}
public class TalkSend implements Runnable {
DatagramSocket datagramSocket = null;
BufferedReader bufferedReader = null ;
private int formPort;
private String toIP;
private int toPort;
public TalkSend(int formPort,String toIP,int toPort) throws SocketException {
this.datagramSocket = new DatagramSocket(this.formPort);
this.bufferedReader = new BufferedReader(new InputStreamReader(System.in));
this.formPort = formPort;
this.toIP = toIP;
this.toPort = toPort;
}
@Override
public void run() {
try{
while (true){
String data = bufferedReader.readLine();
byte [] dates = data.getBytes();
DatagramPacket datagramPacket = new DatagramPacket(dates,0,data.length(),new InetSocketAddress(this.toIP,this.toPort));
datagramSocket.send(datagramPacket);
if(data.toString().startsWith("bye")){
break;
}
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if( bufferedReader != null)
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
if(datagramSocket != null)
datagramSocket.close();
}
}
}
接下来就是创建线程了
public class TalkStudent {
public static void main(String[] args) throws SocketException {
new Thread(new TalkSend(7777,"127.0.0.1",9999)).start();
new Thread(new TaleTeceive(8888,"老师")).start();
}
}
public class TalkTeacher {
public static void main(String[] args) throws SocketException {
new Thread(new TalkSend(5555,"127.0.0.1",8888)).start();
new Thread(new TaleTeceive(9999,"学生")).start();
}
}