需求说明
实现客户咨询问题,客服人员答复问题
分析
咨询时,客户是发送方,客服人员是接收方
答复时,客服人员是发送方,客户是接收方
实现思路和步骤完全相同
先运行Receive.java 再运行Send.java
package com.gongsi.cn.ch1;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketAddress;
public class Receive {
public static void main(String[] args) {
DatagramPacket dp=null;
DatagramSocket ds=null;
DatagramPacket dpto=null;
System.out.println("try上面");
try{
//创建DatagramPacket对象,用来准备接收数据包
byte[] buf=new byte[1024];
dp=new DatagramPacket(buf,buf.length);
//创建DatagramSocket对象,接收数据
ds=new DatagramSocket(9999);
Thread.sleep(10000);
ds.receive(dp);
//显示接收到的信息
String mess=new String(dp.getData(),0,dp.getLength());
System.out.println(dp.getAddress().getHostAddress()+"说:"+mess);
String reply="你好,我在,请咨询!";
//显示与本地对话框
System.out.println("我 说:"+reply);
//创建DatagramPacket对象,封装数据
SocketAddress sa=dp.getSocketAddress();
dpto=new DatagramPacket(reply.getBytes(),reply.getBytes().length ,sa);
ds.send(dpto);
}catch (Exception e) {
e.printStackTrace();
}finally{
ds.close();
}
}
}
package com.gongsi.cn.ch1;
import java.io.IOException;
import java.net.*;
public class Send {
public static void main(String[] args) {
InetAddress ia=null;
DatagramSocket ds=null;
try{
String mess="你好,我想咨询一个问题。";
//显示与本地对话框
System.out.println("我 说:"+mess);
//获取本地主机地址
ia=InetAddress.getByName("localhost");
//创建DatagramPacket对象,封装数据
DatagramPacket dp=new DatagramPacket(mess.getBytes(),mess.getBytes().length ,ia,9999);
//创建DatagramSocket对象,向服务器发送数据
ds=new DatagramSocket();
Thread.sleep(10000);
ds.send(dp);
byte[] buf=new byte[1024];
DatagramPacket dpre=new DatagramPacket(buf,buf.length);
//创建DatagramSocket对象,接收数据
//ds=new DatagramSocket(8800);
ds.receive(dpre);
//显示接收到的信息
String reply=new String(dpre.getData(),0,dpre.getLength());
System.out.println(dpre.getAddress().getHostAddress()+"说:"+reply);
}catch (UnknownHostException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}finally{
//关闭DatagramSocket对象
ds.close();
}
}
}