【需求】:实现双方聊天(收数据和发数据)
【技术】:网络编程、IO流、多线程
【代码】:
/*
需求:实现双方聊天(收数据和发数据)
所需技术:网络编程、IO流、多线程
*/
import java.net.*;
import java.io.*;
class SendInfo implements Runnable
{
private DatagramSocket ds;
public SendInfo(DatagramSocket ds){
this.ds=ds;
}
public void run(){
try{
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
String line=null;
while((line=bufr.readLine())!=null){
if("0000".equals(line))
break;
byte[] buf=line.getBytes();
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),10001);
ds.send(dp);
}
}
catch (Exception e){
throw new RuntimeException("发送数据异常!!!");
}
}
}
class ReceInfo implements Runnable
{
private DatagramSocket ds;
public ReceInfo(DatagramSocket ds){
this.ds=ds;
}
public void run(){
try{
while(true){
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());
int port=dp.getPort();
System.out.println(ip+"\\"+port+"::"+data);
}
}
catch (Exception e){
throw new RuntimeException("接收数据异常!!!");
}
}
}
class UdpChat
{
public static void main(String[] args) throws Exception
{
DatagramSocket sendSocket=new DatagramSocket(6666);
DatagramSocket receSocket=new DatagramSocket(10001);
new Thread(new SendInfo(sendSocket)).start();
new Thread(new ReceInfo(receSocket)).start();
}
}
【截图】:
由于只有博主一个人所以属于自娱自乐。。。