赵雅智_java网络编程(1) (四)

2014-11-24 09:19:33 · 作者: · 浏览: 1

String data=new String(dp.getData(),0,dp.getLength());

System.out.println(ip+":"+data);


}catch(Exception e){
e.printStackTrace();
}
}

}

}

package src.com.hbsi.net;
import java.net.*;
import java.io.*;

public class ChatDemo {

/**
* @param args
*/
public static void main(String[] args) {
try {
DatagramSocket send=new DatagramSocket();
DatagramSocket rece=new DatagramSocket(9008);

new Thread(new ChatSend(send)).start();
new Thread(new ChatRece(rece)).start();

} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

class ChatSend implements Runnable{
DatagramSocket ds;

public ChatSend(DatagramSocket ds){
this.ds=ds;
}

@Override
public void run() {
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

String line=null;

while((line=br.readLine())!=null){
if(line.equals("over"))
break;

byte[] buf=line.getBytes();

DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.49.255"),9008);

ds.send(dp);
}
ds.close();
}catch(Exception e){
e.printStackTrace();
}
}

}

class ChatRece implements Runnable{
DatagramSocket ds;

public ChatRece(DatagramSocket ds){
this.ds=ds;
}
@Override
public void run() {
while(true){
try{
byte[] buf=new byte[1024];

DatagramPacket dp=new DatagramPacket(buf,buf.length);

ds.receive(dp);

String ip=dp.getAddress().getHostAddress();

String data=new String(dp.getData(),0,dp.getLength());

System.out.println(ip+":"+data);


}catch(Exception e){
e.printStackTrace();
}
}

}

}

\