现在我再搞通信,对于通信这里我主要从以下三个阶段来谈。
1:刚开始接触有些生疏,自己看到书上的代码很烦很乱,整理不出自己的思路,于是就开始抄,抄的昏天暗地,手都疼了,自己把代码抄了一遍之后,感觉有些思路,自己能够写出来了,于是就明白其实抄书也是一种美。后来感觉自己有些思路于是就是自己搞,其实通信这块最关键的一点就是那两个定义剩下的全是以前自己知识的铺垫,对于通信的
最关键的是:
客户机:Socket sc=new Socket("localhost",9090);
服务器:ServerSocket ss=new ServerSocket (9090);
扩展:在输入ip地址,密码时,我们可以通过加一些界面,在界面里输入密码,ip地址,这样我们就可以连接在局域网内的任何计算机。在测试计算机之前我们一定要现将防火墙关闭,而后检查自己的计算机是否能够连接到其他计算机上,我的就比较悲剧不能联机,所以每次都是自己电脑即是服务器有时客户机。在这一节我认为最关键的是知识的综合运用,我们,文件输入,输出流的基本操作。
优化:我们在处理连接对象时开始会用到while true 语句,但是当程序运行起来后我们就会发现有一个弊端我们让程序一直在运行
这样就会使我们不能同时启动多个客户端,也就是不能实现群聊的功能:最好的办法是我们运用一个线程来解决这个问题,这样每次启动客户机我们都能启动。
其实这一节的关键问题就是这些,我们只要连接上客户机,服务器,我们通信的工作就完成了,在传送东东的时候,我们就会用到文件那里的知识,其实通信这里就是对前面知识的总结,与深化,我认为。我们会用到文件输入流输出流的相关知识,和打包的知识,
2:xmpp协议嘛,其实也不难,我们只要在客户机,服务器两端规定好的协议我们就能取得双方的正确通信。关于xmpp的官方解释到处都能找到,我想一下了,最关键就是协议的重要性,我们在chat这是关键无论我们加上怎样的内容都是在这个基本聊天的协议上添加。在解析时我们还要注意;要按照协议,解析。这个我的项目只是实现了一个简单的收发信息,聊天的功能。
3:远程通信我自己写的:(1)我谈一下我的思路我的主要思路服务器:被控制端首先要启动线程,用robot类回放(2):不断的截屏发送给控制端保持早20张每秒,这里需要两个线程,分别是:在线程中抓屏发送,在这里线程我们获得屏幕大小,转化成byte数组,这样我们就不断的用数组发送;另一个线程我们读取控制端发来的事件对象并对他进行处理(3)事件对像的读取,全盘对象,我们读取字节的时候既读了本身字节,内容字节,在被控段我们不断的读不断的写,
其实进行剥丝抽茧后我们明白其实这里最关键的就是图片数据的首发格式:被控端调用robot对象截屏后得到的是一个bufferedimage对象bufferedimage类及其所有的父类都没有实现serializablie接口,所以不能直接以对象形式发送,需要将bufferedimage对象转为字节数组发送,发送字节数组的长度,接收方在读取长度值后才知道再要读取多少个字节是一张图片的数据,发送方的示例代码:
java.awt.Robot robot = new java.awt.Robot();// 机器人对象
// 取得屏幕
java.awt.Toolkit tk = java.awt.Toolkit.getDefaultToolkit();
java.awt.Dimension ds = tk.getScreenSize();
// 设定区域的大小 //创建一个方形对象
Rectangle rt = new Rectangle(0, 0, ds.width, ds.height);
// 取得指定大小的一张图片
BufferedImage image = robot.createScreenCapture(rt);
// 创建内存流
java.io.ByteArrayOutputStream temB = new java.io.ByteArrayOutputStream();
// File file = new File("f://bpak.jpg");
javax.imageio.ImageIO.write(image, "jpg", temB);
byte[] data = temB.toByteArray();
System.out.println("保存成功");
return data;
这里最重要就是几个新的类:robot toolkit dimension
接收端在读取数据时首先要读取一个int值,知道随后多少字节组成一张图片的数据,然后读入这些字节并转换为一张图片
dins = new DataInputStream(sc.getInputStream());
int len = dins.readInt();
dins.readFully(data);
// 将读到的图标数据生成一个图标对像
javax.swing.ImageIcon ic = new ImageIcon(data);
这就是接收方的转化。
关于网络画板的几种猜想:
对于网络画板,我一直没弄懂什么意思,搞什么,于是就按照自己的想法搞。
实现网络想法一:我将我所画画板保存成为一个文件,而后我在用文件向服务器发送,这样服务器就会得到我发送的文件,在从文件中解析出来就得到了画板。实现了,太简单没技术含量。
实现网络画板想法二:我通过robot获得画布对象,将画布转为字符串发送过去,给服务器,服务器得到了服务器在得到字节流,我们就得到了,这个正在实现中。遇到的问题:我在将画布转为字符串时我无法将其转化,好头痛,把imageio的方法试了一遍毫无结果,我感觉这个思路是不是错了。
实现网络画板三:采用封装的思想,将我写的画板的各种信息封装到一个类里,坐标信息,颜色信息,在发送。
最后一点就是:酒要一口一口的喝,程序要一行行的敲,多测试,少麻烦。
分享到:
相关推荐
### 光纤通信总结 #### 一、光纤通信概述 光纤通信是一种先进的通信技术,它利用光纤作为传输介质,通过光波携带信息进行数据传输。相比于传统的金属导线,光纤通信具有诸多优势,如传输距离远、抗干扰能力强等。 ...
[020]VC++串口通信总结.zip上位机开发VC串口学习资料源码下载[020]VC++串口通信总结.zip上位机开发VC串口学习资料源码下载[020]VC++串口通信总结.zip上位机开发VC串口学习资料源码下载[020]VC++串口通信总结.zip...
移动通信总结新版.pdf 移动通信技术在当今世界中扮演着非常重要的角色,随着移动通信技术的发展,人们的生活水平和工作效率都得到了极大的改善。在这个移动通信总结新版中,我们将详细介绍移动通信技术的发展历史、...
具体到代码实现,压缩包中的"C#通信总结 含管道通信的代码"可能包含示例项目或源代码,展示了以上提到的.NET Remoting、WinAPI调用和管道通信的实际应用。通过学习这些代码,你可以深入了解每个方法的细节,包括如何...
总结来说,施耐德AT310变频器与西门子S7-1200 PLC通过Modbus RTU通信,需要精确配置双方的通信参数,并注意地址的对应关系。同时,理解并熟练掌握PLC的编程技巧,对于成功实现通信至关重要。在实际操作中,不断试验...
### VC串口通信总结 #### 一、串口通信概述 串口通信是计算机与外部设备之间进行数据交换的一种常见方式。随着技术的发展,虽然USB和以太网等其他通信方式逐渐普及,但在某些特定场景下,特别是工业控制领域,串口...
本资源“C#管道通信总结的实例及文档代码”提供了一个关于C#管道通信的详细教程,这对于理解进程间通信(IPC,Inter-Process Communication)至关重要。 管道通信是一种在不同进程之间交换数据的有效方式,它允许...
常用一些通信总结,如CAN 485 RS232 SPI SCI I2C
短距离无线通信总结.doc
### 串行通信总结 #### 一、串行通信技术概述 ##### 1.1 概念 串行通信作为一种常见的数据传输方式,在现代通信领域扮演着重要角色。相较于并行通信,串行通信通过单一的数据线进行数据的逐位传输,每位数据占据...
别人自己写的总结,内容是常用进程间通信方法及函数
移动通信是现代通信技术的重要组成部分,它涉及到在移动设备之间或移动设备与固定点之间的信息传输。移动通信的核心特点是利用无线电波在复杂环境中的传播,同时处理有限的频谱资源和日益增长的业务需求。根据工作...
这些设备间的通信是实现自动化系统高效运行的关键。本文将深入探讨西门子产品之间的通信方式和协议,帮助读者理解和掌握相关知识点。 1. **S7-300与S7-200通信** - **MPI通信**:MPI(Multi Point Interface)是一...
总结来说,这个实验涵盖了TCP通信基础、MFC中的套接字编程以及异步通信模式的应用,通过服务端和客户端的互动,实现文本字符串的实时传输。这样的实践有助于开发者深入理解网络编程,特别是TCP通信的异步特性,提升...
串口通信项目总结 本篇资源的主要内容是对多串口接收项目的总结,涵盖技术总结和心得总结两方面。下面将对标题、描述、标签和部分内容进行详细的解释和总结。 一、技术总结 技术总结是对整个项目的技术实现过程的...
移动通信的要点总结涵盖了多个方面。信息通过无线电波传播,面临传播损耗和用户移动造成的多普勒频移等问题。干扰环境复杂,包括内部和外部干扰,以及各种类型的干扰效应。网络管理任务繁重,如用户管理和计费。频谱...
51单片机的串口,是个全双工的串口,发送数据的同时,还可以接收数据。 当串行发送完毕后,将在标志位 TI 置 1,同样,当收到了数据后,也会在 RI 置 1。
这是一个关于Service与Activity通信的部分代码,及如何使用Service和Activity通信。
移动通信是现代通信技术的重要组成部分,它涉及到许多关键概念和技术,包括信令、移动通信、接入信令、网络信令以及各种多址接入技术。在移动通信中,信令是控制通信过程的关键,分为接入信令(如移动台与基站之间的...