SendThread
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.Scanner;
public class SendThread extends Thread{
private int port;
public SendThread(int port) {
this.port=port;
}
@Override
public void run() {
DatagramSocket ds=null;
try {
ds = new DatagramSocket();
Scanner s=new Scanner(System.in);
while(true) {
String str=s.nextLine();
if(str.equals("end"))break;
byte[] buf=s.nextLine().getBytes();
int length=buf.length;
InetAddress address=InetAddress.getByName("192.168.0.108");
/*int port=7878;*/
DatagramPacket dp=new DatagramPacket(buf,length,address,port);
ds.send(dp);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(ds!=null)
ds.close();
}
}
}
ReceiveThread
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class ReceiveThread extends Thread {
private int port;
public ReceiveThread(int port) {
this.port=port;
}
@Override
public void run() {
DatagramSocket ds=null;
try {
ds = new DatagramSocket(port);
while(true) {
byte[] buf=new byte[1024];
int length=buf.length;
DatagramPacket dp=new DatagramPacket(buf,length);
ds.receive(dp);
String str=new String(dp.getData(),0,dp.getLength());
InetAddress address=dp.getAddress();//获取发送端地址
System.out.println(address+":"+str);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//要指定监听哪个端口号来接收数据
finally {
if(ds!=null)
ds.close();
}
}
}
Chart_01
public class Chart_01 {
public static void main(String[] args) {
new SendThread(7878).start();
new ReceiveThread(7879).start();
}
}
Chart_02
public class Chart_02 {
public static void main(String[] args) {
new SendThread(7878).start();
new ReceiveThread(7879).start();
}
}