不带UI,仅支持两端对话,发送“exit”结束对话。
package udp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
public class Client2 {
public static void main(String[] args) throws IOException {
Sender sender=new Sender(new InetSocketAddress("127.0.0.1", 3333),2222);
Receiver receiver=new Receiver(6666);
sender.start();
receiver.start();
}
}
class Sender extends Thread{
InetSocketAddress inetSocketAddress;
int sendport;
public Sender(InetSocketAddress inetSocketAddress,int sendport ){
this.inetSocketAddress=inetSocketAddress;
this.sendport=sendport;
}
@Override
public void run(){
InputStreamReader systemin=new InputStreamReader(System.in);
BufferedReader bReader=new BufferedReader(systemin);
String s=null;
byte[] buf=new byte[1024];
DatagramPacket datapacket=null;
DatagramSocket datasocket=null;
try {
datasocket=new DatagramSocket(sendport);
} catch (SocketException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
while(true){
try {
s=bReader.readLine();
if(s!=null){
buf=s.getBytes();
datapacket = new DatagramPacket(buf, buf.length, inetSocketAddress);
datasocket.send(datapacket);
System.out.println(new String(datapacket.getData()));
}
if(s.equals("exit")){
datasocket.close();
System.exit(0);
}
} catch (IOException e) {
datasocket.close();
e.printStackTrace();
}
}
}
}
class Receiver extends Thread{
int receivePort;
public Receiver(int receivePort){
this.receivePort=receivePort;
}
public void run(){
DatagramSocket datasocket=null;
try {
datasocket = new DatagramSocket(receivePort);
} catch (SocketException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
DatagramPacket datapacket=null;
while(true){
try {
byte[] buf=new byte[1024];
datapacket=new DatagramPacket(buf, buf.length);
datasocket.receive(datapacket);
System.out.println(buf);
String string=new String(buf, 0, datapacket.getLength());
System.out.println("**"+string+"**");
} catch (Exception e) {
datasocket.close();
e.printStackTrace();
}
}
}
}