`
bigfang
  • 浏览: 39719 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

学习通信基础感悟1

阅读更多
   
    这几天,初学基础通信,我对这方面的概念,以前没有怎么了解。所以,目前只是大致了解。

1.对客户端与服务器的理解:
    在通信方面,经常举打电话的例子。比如,a向b打电话,那么a是客户端,b是服务器。先向对方发送连接请求的称为客户端。b的手机开机在线,等价于这个端口的服务器已建立,停留在accept等待连接,第一个阻塞状态的时机。此时,a向b连接成功后,b可以先向所有的客户端,发送相同的问候词,比如“你好”。然后,b停留在读取a的信息,第二个阻塞状态的时机。然后,两者,就可以进行交流了。两者对话,可以制定,发送一句话的结束协议,还有最后双方结束对话的协议,即双方断开连接。

2.ServerSocket与Socket
    一开始,对ServerSocket、Socket这两个词,有种十分陌生的感觉,这英语似乎很难理解。中文翻译,也不是很直观:服务器套接字,还需要对套接字这个词再做了解。在慢慢地学习中,大致,把ServerSocket认为一个服务器,而Socket作为一个客户端与服务器的连接媒介,可从这个载体上获得输入和输出流。

3.几个异常:
在通信这部分,异常比以前多了,我的程序中,最常见的就是
   (1)java.net.BindException: Address already in use: JVM_Bind,连接了一个已经占用的端口。
   (2)java.net.SocketException: Socket closed。当服务器在accept或者read阻塞状态时,关闭服务器产生的异常。

   当发现异常时,最好及时测试理解,那么,以后遇到,也能安然处之、不足为奇了。

前面基础部分中有:
   (1)数组越界
   (2)内存溢出,栈溢出一般是死循环,而堆溢出,可能是程序员申请分配的内存,超过了JAVA虚拟机的初始限制值.
  (3)空指针异常,没有创建对象,对象为null。
    ……

4.实现字符串的整句输出、多个客户端与服务器连接
    服务器创建使用telnet命令。
    (1)处理阻塞的方法是多线程的客户端,使各自的阻塞影响不了其他客户端。
    (2)这里,处理比较久的是读键盘的输入,Windows中,按Enter键,先后读入两个字节:回车13(CR-carriage return)、换行10(LF-line feed,NL new line),而右边数字键盘的Enter,只有一个字节10。所以,当制定每句话的结束标志是回车键时,要考虑一下按回车键的第二个字节10的处理。

5.String与StringBuffer
   字符串缓冲区StringBuffer与String的一个区别是:String不可改变,即若要改变String,则要new一个新的String对象,而StringBuffer称为可改变类,它是默认先分配大小为16的空间,方法append()、ingsert()等等,当空间不足时,才new一个新的2倍原来size+1的对象。StringBuffer某些方法可能还是会new一个新的对象,比如subString()。所以,在多次改变String的情况下,StringBuffer比String性能更好。

6.为简单的服务器,添加界面,服务器启停控制
    为了服务器的阻塞不影响界面的控制,所以,将创建服务器,写成了一个线程。这加强了对线程的使用和了解,线程中等待,Thread.sleep(100);让线程休眠,放弃CPU,线程进入阻塞状态。


    在学习中,还有
(1)方法声明、如何写负责的注释;
(2)发送消息时,字符的编码、解码问题,有编码就必然有对应的解码;
(3)阻塞问题,可用多线程处理;
(4)封装概念,类功能单一,可扩展,严谨;这个,非一日之成。
(5)正在考虑的启停机制。
    这些慢慢学吧。




分享到:
评论

相关推荐

    C++课程设计/期末大作业,基于mfc的图形编辑系统+源代码+文档说明+实验报告+pdf

    (1)感悟具体开发流程的开发细节。 (2)通过使用MFC(Microsoft Foundation Classes)微软基础类进行开发,加强对于OOP(面向对象程序设计)的理解。 (3)培养宏观架构能力和具体完善每一个模块的编码能力。 ...

    【RT-Thread作品秀】数字焊机与工业机器人通信网关-电路方案

    因为已经参加工作了,业余时间不是特别充足,所以这次比赛的内容是和公司的项目一同推进的,由于部分效果和程序涉及商业用途,所以仅部分基础组件开源,有需要全部开发资料的可联系18435122702。

    2020数学建模A题论文代码数据论文+文档说明

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    基于知识图谱实现的航天数据可视化系统源码+文档说明(大赛作品)

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    《收发电子邮件》教学设计(1).doc

    学生在学习本课之前,已经 掌握了计算机操作以及网络的一些基本知识与技能,对利用电子邮件方式进行通信有一定 的兴趣,有利于在课堂教学中实施以学生为主体的教学方式,由于因特网的迅速发展, 少数学生家庭已经具备...

    全国计算机设计大赛的作品-基于知识图谱搭建的航天数据可视化系统java源码+文档说明+界面演示

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    《收发电子邮件》教学设计.doc

    学生在学习本课之前,已 经掌握了计算机操作以及网络的一些基本知识与技能,对利用电子邮件方式进行通信有 一定的兴趣,有利于在课堂教学中实施以学生为主体的教学方式,由于因特网的迅速发 展,少数学生家庭已经...

    [14本经典Android开发教程]-8-Linux内核阅读心得体会

    读核感悟 伪装现场 信号通信 19 读核感悟 kbuild系统 内核模块的编译 22 读核感悟 kbuild系统 编译到内核和编译成模块的区别 24 读核感悟 kbuild系统 make bzImage的过程 26 读核感悟 kbuild系统 make menuconfig 31...

    Java开发基于知识图谱的航天数据可视化系统源码+项目使用说明.zip

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    信息技术培训ppt资料.pptx

    (1)多媒体是信息交流和传播媒体 (2)多媒体是人机交互式媒体 (3)多媒体信息是以数字形式进行存储和传输的 (一)多媒体技术的含义 多媒体技术是使用计算机综合技术和数字通信网络技术处理多种信息媒体(文、图...

    亮剑.NET深入体验与实战精要2

    此次将长期的思考、感悟,多年的系统开发、设计和团队管理经验,以及深入分析众多项目实战的宝贵成果和盘托出,力求将编程思想与具体实践融为一体,提炼出适合于广大读者快速理解和彻底掌握.NET软件开发的最佳学习...

    亮剑.NET深入体验与实战精要3

    此次将长期的思考、感悟,多年的系统开发、设计和团队管理经验,以及深入分析众多项目实战的宝贵成果和盘托出,力求将编程思想与具体实践融为一体,提炼出适合于广大读者快速理解和彻底掌握.NET软件开发的最佳学习...

    【RT-Thread作品秀】基于RT-Thread的智慧农业物联网网关-电路方案

    比赛感悟认识RT-Thread已经是很多年前的事情了,当初也买了第一代的魔笛网络收音机开发板,但是很遗憾一直都没有在实际项目中使用到。主要原因都是我手头的项目都是基于裸机开发的,都没有使用过RTOS。基于RTT大赛的...

Global site tag (gtag.js) - Google Analytics