`
linglingxia
  • 浏览: 38034 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

初识通信

 
阅读更多

通信这部分的学习有一段时间了,感觉难度比较大。觉得跟之前的学习有很大的不同,复杂多了,而且这里更容易出错,而且很多时候都是些自己觉得莫名奇妙的错误,又不好调试。有时候自己的服务器和客户端测试成功了,但和搭档通信测试时,说不定又要很纠结。因为这里最重要的就是协议了,所以双方在通信之前一定要定好协议。这里没做好后面基本上就是瘫痪了。我之前过了一段抄代码的日子,这里就先不说了。感觉通信就是数据的传送,一端发送了一种代表所谓的我们称之为某种意义的数据,也可以说是消息。另一方接收,根据定好的协议将其解析为具有那种意义的消息。最开始接触通信时,我们只是单纯的字节,字符串的传送,双方什么界面都可以不要,客户端使用的是系统提供的telnet工具程序。协议是只要遇到换行,服务器就认为是一条消息。再到后面的多人聊天室也是在这个基础上的加强。不过还是有很大的局限性。

 

到现在的XMPP,其实也就是换了一种协议罢了,双方不再以换行为消息的结束符了,而是拥有了一种固定的消息格式。一条消息会有不同的标签组成,规定了不同的标签代表不同的意义。这样貌似多人聊天室的功能可以扩展一点点了。

  

   说了这么多,但还是要强调下协议的重要性啊。现在就主要讲我在做这个项目时遇到的几个大问题。问题实在太多了,就不一一列出了。

   1.不得不说,协议定好了,就一定要按规矩来。我们那组事先也是把协议定好了。但是我在做群聊的时候,我就忘了协议,根本就没想到协议里的群聊。而是自己在客户端处理的,并没有通过服务器,没用上协议。然后和搭档测试的时候,结果就不用多说了啊。。。

2.当我们测试成功关闭客户端时,服务器那边就挂了,java.net.SocketException: Connection reset 死循环。上网搜了一下,说法不一,我大概也就记得好像是说,一种是这种异常客户端和服务器都可能出现,当一端主动断开时,另一端如果还在发送数据,这时候就会出现这种异常了。另一种是说当一端退出时未关闭该连接,而另一端如果还在从连接中读数据,也会抛出该异常。所以后来就给窗体添加窗体事件监听器。当聊天用户点击窗体关闭按钮时,先发送一条消息给服务器,告诉服务器现在可以关闭该客户的处理对象了。于是服务器将该用户的处理对象移除掉,并断开和它的连接,关闭当前处理线程对象。这样当客户关闭聊天窗体时,服务器不会出现死循环了。

 

3.还有一个就是服务器的界面上显示着当前在线的用户遇到的问题。这个表格在上一次的学习中就遇到了,只是当时保存用户用的是List队列,我们都知道它是有序的,可以根据下标找到用户。抄了书上的代码,查了一下APITabelModel的方法,测试了几次,就出来了。

但是这次真的搞的很纠结。因为在这里保存用户的信息使用的是HashMap。这两个还是有很大的区别的。所以,TabelModelpublic Object getValueAt(int rowIndex, int columnIndex) {}这个方法,我一直不知道怎么下手。两个参数不知道要怎么用。好像跟HashMap没什么关系啊??到后来就问了胡老师,哎,纠结的是胡老师的教学模式是 授人以鱼,不如授人以渔。可是我还是不知道,第二天,我就问了晓盼,他说,HashMap不行,就转换成List。其实我当时是不赞同这个方法的,因为我觉得如果是HashMap<String ,Thread>并不能得到用户的密码。然后我就差不多要放弃了,不过还是想不通,为什么就出不来呢。后来才想到,那个方法是可行的,因为我忽略了用户注册登录时还用了一个HashMap。这样就可以得到我想要的了。

  

  结果是出来了,但发现自己好像成了一个机器人,完全不会思考了。所以以后这方面一定要多注意,做之前一定要多思考,思考有什么思路,有什么方法,而不是注重那个结果。因为我们都知道那个结果对我们都没有任何真实的意义!

 

分享到:
评论

相关推荐

    通信系统参数名词解释与网优初识 通信广角整理

    1. Ec/Io:导频信道的Ec/Io,95与1x与导频信道的SNR相等。 2. Ec/Nt:与Ec/Io相同,但是习惯使用Ec/Io。 3. Eb/Nt:指解调门限,在没有干扰时与Eb/No相同,否则比Eb/No要小。 4. Eb/No:在没有干扰(反向指0负荷)时...

    初识通信——多线程服务器的建立

    NULL 博文链接:https://coco-young.iteye.com/blog/1150719

    通信工程-通信工程图纸初识.pptx

    通信工程勘察设计与制图

    通信工程制图 任务1通信工程制图初识教案2021.pdf

    通信工程制图 任务1通信工程制图初识教案2021.pdf 学习资料 复习资料 教学资源

    读书笔记 |《大话移动通信》

    读书笔记 |《大话移动通信》书籍信息书名:《大话移动通信》作者:丁奇 阳桢出版社:人民邮电出版社本书解决的问题初识移动通信构建移动通信学习基本脉络框架书籍内容结构第一章:点对点的无线通信——从贝尔到...

    【数据通信技术】第三章-01:初识IPv4地址【课件】.pdf

    【数据通信技术】第三章-01:初识IPv4地址【课件】.pdf

    通信仿真技术与实践实验报告(matlab与simulink仿真)

    本文档为通信网络仿真技术实验报告,实验利用matlab和simulink进行通信网络的仿真,对通信网络的性能进行有效评估和预测。

    visual C++_Turbo C串口通信编程实践

    1.1初识串口 1.1.1从外观上了解串口 1.1.2 串口通信的发展前景 1.2 自己制作简单的串口线 1.2.1 三线制串口接线的规定 1.2.2 焊接制作自己的串口连接线 1.3 调试串口通信程序时的几种使用串口的技巧 1.3.1 ...

    初识Linux内核,进程通信能这么玩 (1).mp4

    内容包括:C/C++,Linux,Nginx,golang,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,ffmpeg,流媒体, 音视频,CDN,P2P,K8S,Docker,Golang,TCP/IP,协程,嵌入式,ARM,DPDK等等。。。

    任务9-1-初识人工智能.docx

    网络通信 C.实时控制 D.计算机辅助应用 20、人工智能的目的是让机器能够(),以实现某些脑力劳动的机械化。 [单选题] * A.智能化 B.人性化 C.与人一样工作 D.模拟、延伸和扩展人类的智能(正确答案) 任务9-1-初识...

    初识统一通信技术,从三方来认识

    早在网络融合概念的提出之前,我们就提出了统一通信技术的观点。……

    初识Zigbee协议与协议栈

    Zigbee 是 IEEE 802.15.4 协议...ZigBee 技术是一种短距离、低复杂度、低功耗、低数据速率、低成本的双向无线通信技术或无线网络技术,是一组基于 EEE802.15.4 无线标准研制开发的组网、安全和应用软件方面的通信技术。

    数通网络实践之初识路由器

    路由器是最典型的网络设备,也是数据通信网络当中最重要的设备,它通过运行路由选择协议,计算出路由条目,进而形成路由表,为网络 中的数据包提供转发服务。本文以CISCO路由器为基础,介绍了路由器的基本知识和使用...

    Delphi基础教程图文版之初识面向对象.docx

    Delphi是一种基于面向对象编程的编程语言,面向对象编程是一种程序设计范式,它将程序中的数据和操作数据的方法组合成一个对象,对象之间通过消息传递来进行通信。在面向对象编程中,对象是程序的基本构建单元,它...

    Android系统源码情景分析

    Android专用驱动系统篇介绍了Logger日志驱动程序、Binder进程间通信驱动程序以及Ashmem匿名共享内存驱动程序;Android应用程序框架篇从组件、进程、消息以及安装四个维度对Android应用程序的框架进行了深入的剖析。

    《Android Telephony原理解析与开发指南》_杨青平

    全书共10章,主要内容包括初识Android、搭建Android源代码编译调试环境、深入解析通话流程、详解Telecom、详解TeleService、Voice Call语音通话模型、ServiceState网络服务、Data Call移动数据业务、SMS & MMS业务...

    .NET Remoting与分布式应用开发——初识 Remoting

    Remoting技术最大的特点,就是对远程通信的过程进行了抽象和封装,使开发人员不必去处理底层通信的细节,而可以把重点放在对业务逻辑的处理上。而且Remoting的通信协议也比较灵活,可以使用多个通信协议、不同的数据...

    Android系统源代码情景分析 [罗升阳 著] [高清版 带书签 840页]

    在组织上,本书将上述内容划分为初识Android系统、Android专用驱动系统和Android应用程序框架三大篇。初识Android系统篇介绍了参考书籍、基础知识以及实验环境搭建;Android专用驱动系统篇介绍了Logger日志驱动程序...

    罗升阳-Android系统源代码情景分析(带书签完整高清版).pdf

    在组织上,本书将上述内容划分为初识Android系统、Android专用驱动系统和Android应用程序框架三大篇。初识Android系统篇介绍了参考书籍、基础知识以及实验环境搭建;Android专用驱动系统篇介绍了Logger日志驱动程序...

    计算机网络技术-认识计算机网络.pptx

    项目一 认识计算机网络 任务1 初识计算机网络 计算机网络技术-认识计算机网络全文共73页,当前为第3页。 任务1 初识计算机网络 1.1.1 什么是计算机网络 计算机网络技术-认识计算机网络全文共73页,当前为第4页。 ...

Global site tag (gtag.js) - Google Analytics