UDP练习和toArray的运用

今日学习记录

集合知识点:

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();//老师发送
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值