信息发送端:
package Sky03;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
public class SendTest implements Runnable{
private int ToPort;
private String ToIP;
DatagramSocket socket = null;
InputStreamReader input = null;
BufferedReader reader = null;
public SendTest( int toPort, String toIP) {
ToPort = toPort;
ToIP = toIP;
try {
socket = new DatagramSocket();
input = new InputStreamReader(System.in);
reader = new BufferedReader(input);
} catch (Exception e) {
e.printStackTrace();
}
}
public void run() {
while (true){
try {
String data = reader.readLine();
InetSocketAddress address = new InetSocketAddress(ToIP,ToPort);
DatagramPacket dgp = new DatagramPacket(data.getBytes(),0,data.getBytes().length,address);
socket.send(dgp);
if("bye".equals(data)){
break;//输入bye结束运行
}
} catch (IOException e) {
e.printStackTrace();
}
}
try {
socket.close();
reader.close();
input.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
信息接收端:
package Sky03;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class ReceiveTest implements Runnable {
private int Port;
private String ID;
DatagramSocket socket = null;
public ReceiveTest(int port, String ID) {
Port = port;
this.ID = ID;
try {
socket = new DatagramSocket(Port);
} catch (Exception e) {
e.printStackTrace();
}
}
public void run() {
while (true){
try {
byte data[] = new byte[1024];
DatagramPacket dgp = new DatagramPacket(data,0,data.length);
socket.receive(dgp);
byte buffer [] = dgp.getData();
String str = new String(buffer,0,buffer.length);
System.out.println(ID +":" + str);
if("bye".equals(str)){
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
socket.close();
}
}
对话者1:
package Sky03;
public class TalkTest1 {
public static void main(String[] args) {
new Thread(new SendTest(8888,"127.0.0.1")).start();//要连接的端口号和IP,这里来接了本地的IP
new Thread(new ReceiveTest(7777,"Test2")).start();//别人来连接的端口号
}
}
对话者2:
package Sky03;
public class TalkTest2 {
public static void main(String[] args) {
new Thread(new SendTest(7777,"127.0.0.1")).start();
new Thread(new ReceiveTest(8888,"Test1")).start();
}
}