java通信类

本文详细介绍了Java中网络通信的实现方式,包括使用ServerSocket建立服务器和Socket作为客户端连接服务器,通过InputStream和OutputStream进行数据传输。重点阐述了数据传输过程中协议的重要性,以及如何处理包含多种数据类型的数据。并通过实例展示了如何进行简单的数据发送与读取,以及如何通过窗口知识实现可视化聊天。

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

java对于网络通信有专门的包来管理,在自制服务器中,我们可以用ServerSokect来建立服务器,用Socket来作为客户端连接服务器,通信当然要有传输数据,对于传输流,Socket专门有一个InputStream和OutputStream作为客户端和服务器之间传输的通道,在客户端用Socket的getOutputStream().write()来写入数据,在服务器端用Socket的getInputStream().read()来读取数据,在一般情况下,我们不会向服务器只发送一种数据,而是包含了多种数据类型的混合数据,我们就要有一个协议或者说破译数据的方法来将我们接收到的收据转换成我们需要的数据,协议就是指读取数据的方式比如在聊天室中,一个客户端发过来的信息一般包括了客户的的信息,发送的内容和时间,某些情况下还含有特殊的表情符号,这个我们就要协商好发送和接收的顺序,否则就会读到错误的信息,对于一般的普通对话内容,我们有两种方式来解决,1,发送数据之前先发送数据的长度,服务器会根据数据的长度相应的读取数据2.发送数据时加上结束标志,服务器端读到结束标志时就停止读入,但这样的有个问题,万一用户发送了含有结束标志的内容就可能造成提前结束而造成数据的混乱。InputStream.read()方法是只要无法读到下一个字符就会一直阻塞,所以建议用线程的的方式使用,同时由于会阻塞的特性,我们无须添加发送信息的标志,对此我们就能够进行简单的数据发送与读取,可以根据自己已经学过的窗口知识来将数据显示包装起来实现可视化聊天
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值