socket 理解

本文详细介绍了Java中字节流的读取方法及原理,并通过实例解释了一个字节等同于两个16进制数据的概念。同时,对Socket编程中的阻塞IO进行了深入浅出的讲解,包括其工作原理及常见应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1个字节等于2个16进制,所以java io中的字节流中读取一个字节就是读了2个16进制的数据

在项目中我们读取文件的时候经常是这样的:

byte [] bytes = new byte[1024];
			
			int length = 0;
			
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			
			while((length = is.read(bytes))!=-1)
			{
				baos.write(bytes,0,length);
			}
			
这个代码的意思是 首先申明一个1024字节大小的byte数组 也就是1K的数组,然后
is.read(bytes))
io流往这1K大小的数组里面放东西 如果是
is.read()
则是一个一个字节读取的,读出来就是2个16进制的数


2:socket 编程简单讲解

主要是说io的阻塞式,所谓阻塞就是说io在read的时候一直阻塞在那,因为客户端一直没有关闭,所以服务端一直在那阻塞着,如果客户端调用了关闭流的方法则会read方法读取到-1 则表示结束,如果read方法阻塞,然后客户端突然就断链了 ,则会抛出异常。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值