今日学习记录
集合知识点:
list.toArray() //不经常使用
将集合转换为字符数组
list.toArray(T[] a)
String[] arr = list.toArray(new String[list.size()]);
将集合转换为指定数据类型的数组
UDP聊天代码
发送端代码
System.out.println("发送端启动中.......");
DatagramSocket client = new DatagramSocket(8888);
String s = "大武汉";
byte[] datas = s.getBytes();
DatagramPacket packet = new DatagramPacket(datas, 0, datas.length,
new InetSocketAddress("localhost",9999));
client.send(packet);
client.close();
接收端代码
System.out.println("接收端启动中.......");
DatagramSocket server = new DatagramSocket(9999);
byte[] datas = new byte[1024 * 6];
DatagramPacket packet = new DatagramPacket(datas, 0, datas.length);
server.receive(packet);
System.out.println(new String(datas,0,datas.length));
server.close();
1.传输基本数据类型
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(new
BufferedOutputStream(baos));
dos.writeUTF("程序员");
byte[] datas = baos.toByteArray();
DataInputStream dis = new DataInputStream(new BufferedInputStream(
new ByteArrayInputStream(datas)));
String s = dis.readUTF();
boolean flag = dis.readBoolean();
System.out.println(s + "--->" + flag);
2.传输Object数据类型
// 写入引用数据类型ObjectOutputStream
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(baos));
oos.writeObject("你好啊");
oos.writeObject(new Date());
employee emp = new employee("张三",23);
oos.writeObject(emp);
oos.flush(); //刷新一下
byte[] datas = baos.toByteArray();
// 读取引用数据类型
ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(
new ByteArrayInputStream(datas)));
Object s = ois.readObject();
Object date = ois.readObject();
Object employee = ois.readObject();
System.out.println(employee);
用UDP做学生端和老师端互相对话的聊天
思路:
学生端是一个线程, 老师端也是一个线程, 将发送端和接收端分别封装在两个线程类当中, 在学生类中启动发送端线程, 在教师端启动接收端线程, 实现教师向学生发送信息.
教师和学生互相通信, 只需要将学生端中启动一个新的接收端线程, 在教师端中启动一个发送端线程, 注意:发送和接收对应端口必须一致.
new Thread(new TalkSend(9999, "localhost", 8888)).start();//学生发送
new Thread(new TalkReceive(7777,"老师")).start();//学生接收
new Thread(new TalkReceive(8888,"学生")).start();//老师接收
new Thread(new TalkSend(6666, "localhost", 7777)).start();//老师发送