import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
public class Sender {
public static void main(String[] args) {
DatagramSocket ds=null;
try {
//创建DataGramSocket对象,制定发送方的端口号
System.out.println("同学上线了");
ds = new DatagramSocket(8888);
while(true) {
//将同学的输入转成字节数组
Scanner sc=new Scanner(System.in);
System.out.print("学生:");
String str=sc.next();
byte [] a=str.getBytes();
//创建一个数据包,用该数据包包裹同学信息发送给接受者咨询老师
DatagramPacket dp=new DatagramPacket(a, a.length, InetAddress.getByName("192.168.51.179"), 10001);
ds.send(dp);
//准备一个空的数据包,用来接收数据
byte[] b=new byte[1024];
DatagramPacket dp1=new DatagramPacket(b, b.length);
ds.receive(dp1);
System.out.println("咨询老师:"+new String(dp1.getData(),0,dp1.getLength()));
}
} catch (IOException e) {
e.printStackTrace();
}finally {
//关闭
ds.close();
}
}
}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
public class Receiver {
public static void main(String[] args) {
DatagramSocket ds=null;
try {
//创建DataGramSocket对象,制定接受方的端口号
System.out.println("咨询老师上线了");
ds = new DatagramSocket(10001);
while(true) {
//准备一个空的数据包,用来接收数据
byte [] a=new byte[1024];
DatagramPacket dp=new DatagramPacket(a, a.length);
//接受数据,存放在数据包中
ds.receive(dp);
/*
* dp.getData()得到的是一个字节数组,我要展示的话就要将字节数组转为字符串.
* 通过后两个参数控制输出的长度
*/
System.out.println("同学:"+new String(dp.getData(),0,dp.getLength()));
//将老师输入转成字节数组
Scanner sc=new Scanner(System.in);
System.out.print("咨询老师:");
String str=sc.next();
byte [] b=str.getBytes();
//创建一个数据包,用该数据包包裹同学信息发送给接受者咨询老师
DatagramPacket dp1=new DatagramPacket(b, b.length, InetAddress.getByName("192.168.51.179"), 8888);
ds.send(dp1);
}
} catch ( IOException e) {
e.printStackTrace();
}finally {
ds.close();
}
}
}
运行效果:
咨询老师上线了
同学:老师,我想学java
咨询老师:同学,你有基础吗
同学:没有呢,零基础可以学吗
咨询老师:可以呢
同学:那学费是多少呢
咨询老师:19998,可以接受吗
同学:有点小贵
咨询老师:
同学上线了
学生:老师,我想学java
咨询老师:同学,你有基础吗
学生:没有呢,零基础可以学吗
咨询老师:可以呢
学生:那学费是多少呢
咨询老师:19998,可以接受吗
学生:有点小贵
-------------------------------------------------------------------------------------------------------------------------------------------
以上聊天无法结束,可以加入一个if判断,当学生输入再见,结束对话。