1.蓝杰网络通信基础实践

上传人:ZJ****1 文档编号:46841105 上传时间:2018-06-28 格式:PDF 页数:45 大小:703.35KB
返回 下载 相关 举报
1.蓝杰网络通信基础实践_第1页
第1页 / 共45页
1.蓝杰网络通信基础实践_第2页
第2页 / 共45页
1.蓝杰网络通信基础实践_第3页
第3页 / 共45页
1.蓝杰网络通信基础实践_第4页
第4页 / 共45页
1.蓝杰网络通信基础实践_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《1.蓝杰网络通信基础实践》由会员分享,可在线阅读,更多相关《1.蓝杰网络通信基础实践(45页珍藏版)》请在金锄头文库上搜索。

1、java 核心技术讲义-蓝杰实训 只为不凡而来 www.NetJ 1.网络通信基础实践网络通信基础实践1.起步起步:聊天室实现聊天室实现.21.从零开始实现公共聊天室从零开始实现公共聊天室.2 1.网络基础知识.2 2.一步一步创建简单服务器: .5 3.服务器读写消息实现.8 4.群聊服务器实现.16 5.群聊客户端实现.332.程序结构性问题分析程序结构性问题分析:.43 1.整体结构设计的重要性.43 2.方法定义时细节的处理.43 3.高耦合的问题:.44蓝杰内部资料 1java 核心技术讲义-蓝杰实训 只为不凡而来 www.NetJ 1.起步起步:聊天室实现聊天室实现很久很久以前,不

2、知是 Oracle还是Sun 说,计算机就是网络,因为在以前的人们看来,计 算机主要是做为计算工具被使用;自从 1983年起,TCP/IP协议发明(是美国加州大学洛杉矶分校 网络工作小组的 S.克罗克)和应用以来,计算机的功能主要演变成为了我们的一个交流工具:当你 访问http:/www.NetJ 时;当你拔打移动电话或交手机话费时;当你聊 QQ 时,当企业领导在 ERP 平台看查看报表时;. . . 我们的生活再也没有哪一个方面可以离开电脑屏幕后面的网络通信技术了。从程序员的角度看:再也没有哪一个软件能够离开网络通信技术的应用了-就像一株大树, 决定花叶鲜亮的是深埋在地下的根-没有网线,QQ

3、 就不是 QQ 了;蓝杰想说的是:不懂,甚止说, 不精通网络通信的程序员,是无法开发出优秀的应用软件项目的!除排你想让自己的工作只是在 浮在表层!也许你早有耳闻,TCP/IP 协议是网络通信的精要;但本书显然不是对 TCP/IP 协议进行巨细 无遗的解释,这方面的书己是随手可见;本书是想解决这样一个问题:将你定位在一个软件开发 者的角度,如何在实践中完成网络通信软件的开发和具体技术的应用。1.从零开始实现公共聊天室1.网络基础知识我不得不总是用QQ 做为网络通信技术的代言人,虽然我不怎么喜欢它,但它对我们都是再熟 悉不过了。当你在QQ 消息框中输入一段文字按下发送键后,这段文字就会出现在另一台

4、电脑上你朋友的 QQ 中-我们就这这里开始,这是如何实现的?如下图示:网络网络发送:Hello!收到:Hello!开始之前,你至少应知道,每一台机器都有一个独立的 IP 地址,以便另外一台机器可以找到 它;IP 地址在网络中标识一台机器的位置,但是,当A 机器与 B机器通信时,其实是这两台机器 上的程序在通信,A 机器上的 QQA 如想与 B机器的上 QQB 通信时,它还必须知道这个 QQB等待蓝杰内部资料 2java 核心技术讲义-蓝杰实训 只为不凡而来 www.NetJ 在B机器的哪个”端口”上;就像有客人到你家做客,只知道你家在第几幢是不行滴,还得知道 是几号-在计算机中,用“端口号”这

5、个数字标识机器上需要通信的某一个程序。 每一台机器都有从 065535个端口号,其中的每一个数字,可供一个程序通信用,通常情况 下01024 的端口要尽量避免使用-我们称它为知名端口,例如打开网页时,则连结上的是服务器 上的80 端口,在地址栏不需要输入这个端口号,是因为它是默认的; 要测试服务器上是否开放了某个端口,可以使用 telnet 命令,连结对方的端口;如果能连 结上,则证明对方的端口是打开的,如下示: 我们首先 ping 这个主机,查看网络是否通的,注意,ping 命令使用 ICMP 报文 工作在 TCP 层,ping 只能证明网络是否通达,即数据可否传送到指定主机,并不能证明主

6、机上是 否开放某个端口,这个主机上提供的是 网站服务,那么它打开的肯定是 80 端口,接下来我们使用 Telnet命令来测试,在命令行输入,回车后,你如果看到一个全黑的命令行窗口,如下示:则证明你的机器己经连结上了对方的 80 端口,在这个黑窗口中随便输入几个字符,你会看 到如下图示:蓝杰内部资料 3java 核心技术讲义-蓝杰实训 只为不凡而来 www.NetJ 这是因为,服务器上的 web 服务与客户端通信使用的是 http 协议,而我们随便发的消息, 服务器是不能理解的,所以服务器返回了错误说明,然后断开了与客户端的连结。事实上,我们的电脑无时不客在背后默默的通信着,当然,这包含你机器

7、上的木马和病毒。 你现在肯定想知道,你的机器正在与哪些机器通着信?这很简单:可以在命令行输入 netstat 命令 查看,常用的是输入 netstat an,如果格式如下图示:这个命令会打印出你机器与其它服务器建立的 tcp 连结或 udp 连结信息,输出的数据分为 四列,第一列说明是 tcp 还是 udp,第二列说明连结所使用的本地地址,由一个 IP 和端口组成; 第三列说明目标机器的地址,也是由一个 IP 和端口组成,其中的 0.0.0.0 和 127.0.0.1 指的是本 地地址;最后一列,是连结状态的说明,由与只有 TCP 是面向连结的,所以 Proto 为 tcp 的才有 state

8、 说明,当 State为LISTENING 时,表示本地打开了端口,例如表示本地打开了3306 端口,但没有任何机器与这引端口相联;蓝杰内部资料 4java 核心技术讲义-蓝杰实训 只为不凡而来 www.NetJ 表示我们机器上的 1037 端口与 219.133.48.109 上的 80 端口建立了连结-这是我们刚才 telnet的结果。TIME_WAIT 代表一种未知状态,一般指的是己断开的连结。Netstat 命令是网络程序员常用的 工具,可以方便的查看出机器之间的连结信息。不好意思,还没有说清楚, 不好意思,还没有说清楚,hello 是怎么被发送到另外一台机器上的,但我保证,在下一节讲

9、清是怎么被发送到另外一台机器上的,但我保证,在下一节讲清, 并且让你实现!并且让你实现!2.一步一步创建简单服务器: 我们的目地是创建一个简单服务器,能将客户机发来的字符串显示出来,并且再回送给客户创建一个简单服务器,能将客户机发来的字符串显示出来,并且再回送给客户 机机-有必要解解释一下,服务器指的是等待别人来连结的机器;客户机,当然就指的是主动去连 结别人的机器了,这就像打电话过程中的主要与被叫的区分一样。Java 中编写网络通信程序,就必须用到 包下面的 API;创建一个服务器,那是相当的 简单。 第一步第一步:在指定端口上创建一个.ServerSocket 对象,如下代码:Server

10、Socket server=new ServerSocket(9090);System.out.println(“服务器创建成功!“+port);第二步:第二步:当服务器创建成功后,就像的的手机开机后,进入待机状态一样,你也要让服务器进入 等待状态,当然是等待其它的客户机来连结它: /在等待客户机连结进入,进入后,生成一个Socket对象.Socket client=server.accept();System.out.println(“Incoming “+client.getRemoteSocketAddress(); 这段代码需要特别注意:调用服务器对象 server.accept()方法时,程序就

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号