通信学习小结
学习通信已有半个月的时间了,对于io,刚接触时只觉得这完全是一个全新的领域,无从下手,初期也只是通过分析胡哥,强哥例举的代码和教材上的代码示例寻找规律,其中的弯路可没少走。然而,通过这么一段时间的接触和不断的尝试,验证,也掌握了一些基本的知识,但又总感觉自己仿佛是在原地打转,没向前走不远,便又退回来对一些基础的东西进行新一轮的审视,提出一些或许一觉醒来就会觉得无比幼稚的问题。通过这么一段磕磕碰碰学习,不能说收货颇丰,但也总算是对自己有些交代了。
在我的眼中,通信的对象只有两种,主机端和客户端,而我们要做的,就是让这两者之间实现实时的信息交换。就代码流程而言,二者存在一定的区别,主机端:1、ServerSocket一个主机端对象,并绑定一个计算机开放的端口;2、Socket一个连接对象client(客户机),通过ServerSocket.accept()等待客户机接入;至此一个主机端建立完成;客户机:Socket一个client对象并指定接入的主机IP和端口即可。就服务器和客户机的本质而言,二者不过是相互的向对方发送消息,又相互读取对方所发来的消息,并无主机和客户之分,他们的核心内容是读写消息的方法,就读写方法而言,主机和客户机是平等的。下面将进行详细说明。
首先说读取消息,在读取消息之前,我们要知道从那读取,这就需要一个指定的Socket 对象,我们称其为连接对象client(我们可以将其理解为连接两者的通道),接下来要做的,就是从client对象上取得输出流并封装:
InputStream ins = client.getInputStream();//得到输入流
BufferedReader br = new BufferedReader (ins);//封装
得到输出流后开始读取消息
while (true) {
String line = null;
while (null != (line = (br.readLine()))) {
System.out.println("从服务器端得到的信息:" + line);
}
client.close();//关闭连接对象
}
至此读取消息的基本流程便走完了。
再来说说发送消息。与读取消息一样,首先我们要取得一个 Socket 对象client,在client之上取得输出流:
OutputStream ous = client.getOutStream();//得到输出流
BufferedWriter bw = new BufferedWriter (ous);//封装
开始向输出流中写入消息并发送:
String str ;//要发送的消息
bw.write(str+ "\r"); //将消息格式优化并写入
bw.flush(); //强制输出
client.close();//关闭连接对象
发送消息完毕。
在实现主机端与单个客户机实现界面聊天的项目中,其各自读写消息的方法大同小异,上述的读写方法二者都能使用。在实现群聊的项目中,只需要给主机端添加一个线程来保存连接对象(接入的客户机),在添加一个群发消息(给所有客户机发送收到的消息)的方法即可,有待实现!
注:文章中的代码是直接敲上去的。在实际操作中会抛出异常,其处理异常的代码需要在实际操作中自行添加!
相关推荐
java管道通信java管道通信java管道通信java管道通信java管道通信java管道通信
java与PLC通信的实现代码,包含读和写
flex与java通信
java读写Modbus TCP UDP数据,java与modbus通信,Modbus TCP UDP与java通信 全开源 这是一个能正常通过Modbus TCP UDP协议读写项目 请放心下载,完全开源,在多个项目中已经使用
Flex与Java实现通信,Flex与Java实现通信,Flex与Java实现通信
IOT开源网关、SCADA取数开源、PLC数据采集java与三菱 A-1E PLC通信 java与Melsec PLC通信 全开源 springboot与Melsec PLC A-1E通信上位机三菱PLC通信java与三菱PLC JAVA与Melsec A-1E通信 java与PLC通信 源码文件...
java与Omron Fins通信 java与欧姆龙PLC通信 全开源 springboot与欧姆龙PLC fins通信 上位机欧姆龙通信 JAVA编写OMRON Fins TCP协议与OMRON PLC通讯源码 文件类型:程序源代码 主要功能: 本实例基于OMRON Fins TCP...
最近在研究处理java写modbus RTU通信,分别使用几套工具,模拟modbus从站、模拟串口等才能正常在电脑测试成功。 全开源,放心下载 可以查看运行内容https://blog.csdn.net/weijia3624/article/details/121216539
js和android的java通信.txt
Java实现串口通信教程,Java实现串口通信教程,Java实现串口通信教程,Java实现串口通信教程,Java实现串口通信教程.
本课题是应用了计算机网络通信技术和JAVA网络编程的基础知识,以JAVA为平台,利用Eclipse开发工具,并使用SQL Server 2000管理数据库数据开发出的基于Socket的网络即时通信系统。(论文+源代码+开题报告)
Java Socket 聊天通信演示代码 Java Socket 聊天通信演示代码
JAVA实训课程源代码 JAVA局域网通信软件
基于Java的modbusRTU通信
Java串口通信编程
最简单的BlazeDS实现flex与java通信..无积分下载...最简单的BlazeDS实现flex与java通信..无积分下载...最简单的BlazeDS实现flex与java通信..无积分下载...最简单的BlazeDS实现flex与java通信..无积分下载...最简单的...
java即时通信界面本 有简单界面 带GUI
java源码 JAVA串口通信源码 .
java实验实现网络通信,服务端