这里使用了多线程,可以实时看到聊天信息,这是发送端。
package net_study_04;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class SendThread implements Runnable{
private DatagramSocket ds;
private SendThread(){};
public SendThread(DatagramSocket ds) {
this.ds = ds;
}
@Override
public void run() {
try {
BufferedReader bw =
new BufferedReader( new InputStreamReader(System.in));
String line =null;
while((line=bw.readLine())!=null) {
if (line.equals("886"))
{break;}
byte[] byts = line.getBytes();
DatagramPacket dp = new DatagramPacket(byts, byts.length,
InetAddress.getByName("192.168.10.255"), 10086);
ds.send(dp);
}
ds.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
这是接收端:
package net_study_04;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class ReceiveThread implements Runnable{
private DatagramSocket ds;
private ReceiveThread(){};
public ReceiveThread(DatagramSocket ds) {
this.ds = ds;
}
@Override
public void run() {
while (true){
byte[] byts = new byte[1024];
DatagramPacket dp = new DatagramPacket(byts, byts.length);
try {
ds.receive(dp);
} catch (IOException e) {
e.printStackTrace();
}
String str = new String(dp.getData(), 0, dp.getLength());
System.out.println(str);
}
}
}
这是主程序:
package net_study_04;
import java.net.DatagramSocket;
import java.net.SocketException;
public class ChatRoom {
public static void main(String[] args) throws SocketException {
DatagramSocket dsSend =new DatagramSocket();
DatagramSocket dsReceive =new DatagramSocket(10086);
SendThread st= new SendThread(dsSend);
ReceiveThread rt =new ReceiveThread(dsReceive);
Thread send =new Thread(st);
Thread receive =new Thread(rt);
send.start();
receive.start();
}
}