JAVA网络编程UDP与TCP与多线程

互联网三大基石:
1 协议
2 HTLM
3 URL
多线程:多个任务同时执行
进程:一个任务就是一个进程,对于操作系统而言,就是不同的任务执行同时执行,每一个进程都有自己的代码块和运行空间,对于同步锁线程而言,对cpu消耗比较大,一个进程包含多个线程.

线程:线程之间消耗比较小,一系列线程可以共享代码块和运行空间,线程是cpu调度的最小单位.

多线程的开启方式:
1 继承Thread类,重写run();方法
2 实现Runable接口,重写run():方法
3 实现Callable接口,重写call();方法

二十三种模式:生产者消费者模式
线程通信:wait和 notify和notifyAll() 只能在同步环境下使用,否则则会出现异常:iLLegalMonitorStateException
wait():使线程进入等待序列,释放对象锁,让出cpu的资源
notify和notifyAll():唤醒对方处于等待序列的线程,具有可运行的能力,并且要获取对象的锁和cpu的资源才能运行,如果被唤醒的线程没有获取对象锁无法执行

UDP实现接收端:基本流程
1.DatagramSocket 指定端口号 定义接收端
写法:DatagramSocket rec=new DatagramSocket(端口号);

2.准备字节数组,进行打包(用来接收数据,把数据接收到包裹里面的字节数据中)
写法:byte[] arr=new byte[1024n]; 这里的字节容量要设置成1024的整数倍 字节数组的写法也可以写成 byte arr []=new byte[1024n];

3.打包
写法:DatagramPacket packet=new DatagramPacket(arr,0,arr.length); 将第二部的这个字节数组容量已参数的方式传入下面这个对象new DatagramPacket 然后将这个对象赋值给DatagramPacket packet这个引用,至于(arr,0,arr.length)这个里面的参数,其中arr 是我们上面第二部里面我们准备的字节数组,这里作为参数传递给了new DatagramPacket 这个对象,而0,arr.length这里只指从这个字节数组的下标为零的元素到这个字节数组全部的元素,我们这里的length是表示我们获取的是这个数组的长度,那么这个长度里面包含的元素是可以变的,要是我们要获取一个定长数组的所有元素就要
length-1;

4 接收:阻塞式接收

5 处理数据

byte[] getData()
返回数据缓冲区

int getLength()
返回将要发送或接收到的数据的长度

System.out.println(newArr.length); //字节数组的长度
System.out.println(packet.getLength()); //接到数据的个数

6 关闭:rec.close();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值