蓝杰通信总结
在如今这个信息主导的世界中,人们的生活时时刻刻的在和通信相互交融着。也许,生活的忙碌让人们忽略了通信的存在。但不能否认的是,人们在打电话,上QQ,MSN,人人的时候,都无形的运用了通信技术。那么什么是通信技术呢?
在没有学习通信技术之前,觉得通信好神奇好神奇,为什么人与人之间相隔万里就能视频,语音实现通信呢!在学习了通信原理之后,恍然发现其实通信神马的就是浮云~~~那我们言归正传,浅谈一下什么是通信。
我们就以具体的项目为例,具体的分析通信到底是什么。首先说明一下项目的具体要求:我们是要运用通信技术,实现群聊功能,除此之外我们还要实现客户端之间画图的共享功能。好那我们就开始谈谈怎样实现通信吧!
通过这阶段的学习,我们现在实现的通信首先是运用Socket技术创建服务器与客户端来实现的。服务器就是等待别人来连接的机器。客户机就是主动去连接别人的机器了。
我们来先实现服务器的功能
1. 创建一个服务器SocketSerever对象,port为服务器为此通信程序开辟的端口号:
// 创建绑定到特定端口的服务器套接字对象ss
ServerSocket ss = new ServerSocket(port);
2. 前面已经说过了服务器是等待连接的机器,首先想让其他的客户端连接上我们的服务器我们的服务器处于待机状态,调用accept()方法,注意此方法被调用时程序会阻塞,一直到有一个客户端连接到服务器阻塞解除,程序继续执行
// 侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞。
Socket s = ss.accept();
3. 这样我们就建立起了一个服务器,但这样还不能通信,因为还没有传输的管道。但是管道里传的是什么呢?通过学习,我们了解到其实究其根本就是传输的字节,更根本的传的就是01字符串。所以我们用流管道来传输信息。
由于通信的建立是在请求,应答的机制上的,所以一个Socket既要有输入流,又要有输出流。
dis = new DataInputStream(s.getInputStream());
dos =new DataOutputStream(s.getOutputStream());
客户端的实现其实和服务器差不多,只不过由于是主动连接的所以就少了第二部。
根据上面的代码,就能实现通信功能了。下面说几点需要注意的方面。
1. 服务器应该时刻监听,是否有客户端前来连接。所以不能连接一次后就挂断。
while (true) {
// 侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞。
Socket s = ss.accept();
dis = new DataInputStream(s.getInputStream());
dos =new DataOutputStream(s.getOutputStream());
}
2. 实现群聊功能时,要想所有的服务器发送消息,所以要使用线程。一个客户端就是一个线程。
// 使服务器一直处于侦听状态
while (true) {
// 侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞。
Socket s = ss.accept();
dis = new DataInputStream(s.getInputStream());
dos =new DataOutputStream(s.getOutputStream());
CilentThread ct = new CilentThread(s,dis,dos,list);
CilentThread.addSocket(ct);
ct.start();
}
3. 协议的规定:我们大家都知道,网络通信中协议是至关重要的。协议就是计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则。如何定义自己的协议是实现具体功能的约束规则。比如我们实现网络画图板时,协议是这样定义的:byte+int+int+int+int:类型+x1+y1+x2+y2 而接收文本信息时,协议为:类型+字符串长度+字符串。有效的定义协议,可以是程序高效的运行。
总之,通信这块是个没有极限的挑战,你的心有多高,你就能到达一个什么样的高度。
分享到:
相关推荐
《蓝杰JavaScript学习笔记》是一份综合性的JavaScript学习资料,主要涵盖了JavaScript在网页动态操作、DOM操作以及事件处理等方面的基础知识。这篇笔记通过多个实例文件,如`dynamicCreateTable.htm`、`...
手机定位系统技术原理是现代信息技术中的一个重要领域,它涉及通信网络、地理信息系统和卫星定位等多个方面的知识。蓝杰实训课程专注于讲解这一技术,旨在帮助技术人员掌握手机定位背后的业务知识和技术背景。 首先...
【标题】"蓝杰学习笔记备份1"涵盖了多个IT领域的知识点,主要集中在源码解析和工具使用方面。从标签来看,这些笔记可能包含了对软件源代码的深入理解以及实用工具的介绍和应用。 首先,源码分析是软件开发中的关键...
资源讲了一个使用java socket编写FTP client 的实例,可以学习java socket编程的基本步骤和原理
【蓝杰IBM-robocode平台资料】是一套关于使用IBM-robocode进行机器人开发的教育资源。这个平台基于Java语言,提供了丰富的工具和环境,让学习者可以构建、测试和竞赛虚拟机器人。IBM-robocode是一个开源项目,它为...
CMPP(China Mobile Peer-to-Peer)是一种由中国移动制定的通信协议,主要用于短信服务,包括短信提交、发送、接收和查询等操作。CMPP2.0和CMPP3.0是该协议的不同版本,分别对应不同的功能需求和性能优化。 CMPP2.0...
做为java分布式计算的基础框架的RMI体系,是javaEE结构的基础技术. 本课件全面讲解了RMI的一般实现,特殊问题解决及与sping的组合应用. 1.分布式计算的起因及基本原理 2.RMI体系结构 3.RMI服务器实现及编码 ...
- `蓝杰cmpp项目视频说明.txt`:这个文件可能是蓝杰公司关于CMPP项目的视频教程的文字说明,包含了项目实施过程中的指导和最佳实践。 5. **移动通信系统架构**:了解中国移动的网络架构,包括GSM、GPRS、EDGE、...
BlueBlood-OS这是一个类UNIX的64bit操作系统,从0开始完整的实现一个OS本篇README.md面向开发者上手指南以下指南将帮助您在本地机器上安装和运行该项目,...作者邵靳天@蓝杰您也可以在贡献者列表中提到所有参与该项目的