package junitTest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class Chat_A implements Runnable{
private DatagramSocket ds;
public Chat_A(DatagramSocket ds){
this.ds = ds;
}
@Override
public void run() {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
DatagramSocket ds1 ;
ds1 = this.ds;//
String str1 =null ; byte[] Abyte = new byte[1024];
try {
System.out.println("input:");
while((str1=br.readLine())!=null){
Abyte = str1.getBytes();
DatagramPacket dp1 = new DatagramPacket(Abyte, Abyte.length, InetAddress.getLocalHost(),10000);
ds1.send(dp1);
if(str1.equals("byebye")){
break;
}
System.out.println("input:");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ds1.close();
}
}
package junitTest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class Chat_B implements Runnable{
private DatagramSocket ds;
public Chat_B(DatagramSocket ds){
this.ds = ds;
}
@Override
public void run() {
DatagramSocket ds1 = null;
ds1 = this.ds;//
while (true) {
byte[] by1 = new byte[1024];
DatagramPacket dp1 = new DatagramPacket(by1, by1.length);
try {
ds1.receive(dp1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String ip = dp1.getAddress().getHostAddress();
int port = dp1.getPort();
String text = new String(dp1.getData(), 0, dp1.getLength());
System.out.println(ip + " " + port + ": " + text);
if(text.equals("byebye")){
break;
}
}
}
}
package junitTest;
import java.net.DatagramSocket;
import java.net.SocketException;
public class ChatDemo {
public static void main(String[] args) throws Exception {
DatagramSocket send = new DatagramSocket();
DatagramSocket rece = new DatagramSocket(10000);
new Thread(new Chat_A(send)).start();
new Thread(new Chat_B(rece)).start();
}
}
可以在cmd下进行同步聊天