- 1、本文档共138页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络通信起步聊天室实现
目标:
实现多人聊天服务器端
实现服务器管理界面
实现简单客户端
很久很久以前,不知道是Oracle还是Sun说,计算机就是网络,因为在以前的人们看来,算机主要是做为计算工具被使用;自从1983年起,TCP/IP协议发明(是美国 HYPERLINK /w/index.php?title=%E5%8A%A0%E5%B7%9E%E5%A4%A7%E5%AD%B8%E6%B4%9B%E6%9D%89%E7%A3%AF%E5%88%86%E6%A0%A1variant=zh-cn \o 加州大学洛杉矶分校 加州大学洛杉矶分校网络工作小组的S. HYPERLINK /w/index.php?title=%E5%85%8B%E7%BD%97%E5%85%8Baction=editredlink=1 \o 克罗克 (尚未撰写) 克罗克)和应用以来,计算机的功能主要演变成为了我们的一个交流工具:当你访问 时;当你拔打移动电话或交手机话费时;当你聊QQ时,当企业领导在ERP平台看查看报表时;. . . 我们的生活再也没有哪一个方面可以离开电脑屏幕后面的网络通信技术了。
从程序员的角度看:再也没有哪一个软件能够离开网络通信技术的应用了---就像一株大树,
决定花叶鲜亮的是深埋在地下的根---没有网线,QQ就不是QQ了;我想说的是:不懂,甚止说,不精通网络通信的程序员,是无法开发出优秀的应用软件项目的!除排你想让自己的工作只是在浮在表层!
也许你早有耳闻,TCP/IP协议是网络通信的精要;但本书显然不是对TCP/IP协议进行巨细无遗的解释,这方面的书己是随手可见;本书是想解决这样一个问题:将你定位在一个软件开发者的角度,如何在实践中完成网络通信软件的开发和具体技术的应用。
1.网络基础知识
我不得不总是用QQ做为网络通信技术的代言人,虽然我不怎么喜欢它,但它对我们都是再熟悉不过了。
当你在QQ消息框中输入一段文字按下发送键后,这段文字就会出现在另一台电脑上你朋友的QQ中----我们就这这里开始,这是如何实现的?如下图示:
开始之前,你至少应知道,每一台机器都有一个独立的IP地址,以便另外一台机器可以找到它;IP地址在网络中标识一台机器的位置,但是,当A机器与B机器通信时,其实是这两台机器上的程序在通信,A机器上的QQA如想与B机器的上QQB通信时,它还必须知道这个QQB等待在B机器的哪个”端口”上;就像有客人到你家做客,只知道你家在第几幢是不行滴,还得知道是几号---在计算机中,用“端口号”这个数字标识机器上需要通信的某一个程序。
每一台机器都有从0~65535个端口号,其中的每一个数字,可供一个程序通信用,通常情况下0~1024的端口要尽量避免使用---我们称它为知名端口,例如打开网页时,则连结上的是服务器上的80端口,在地址栏不需要输入这个端口号,是因为它是默认的;
要测试服务器上是否开放了某个端口,可以使用telnet命令,连结对方的端口;如果能连结上,则证明对方的端口是打开的,如下示:
我们首先ping 这个主机,查看网络是否通的,注意,ping命令使用ICMP报文工作在TCP层,ping只能证明网络是否通达,即数据可否传送到指定主机,并不能证明主机上是否开放某个端口,
这个主机上提供的是网站服务,那么它打开的肯定是80端口,接下来我们使用Telnet命令来测试,在命令行输入
,回车后,你如果看到一个全黑的命令行窗口,如下示:
则证明你的机器己经连结上了对方的80端口,在这个黑窗口中随便输入几个字符,你会看到如下图示:
这是因为,服务器上的web服务与客户端通信使用的是http协议,而我们随便发的消息,服务器是不能理解的,所以服务器返回了错误说明,然后断开了与客户端的连结。
事实上,我们的电脑无时不客在背后默默的通信着,当然,这包含你机器上的木马和病毒。
你现在肯定想知道,你的机器正在与哪些机器通着信?这很简单:可以在命令行输入netstat命令查看,常用的是输入netstat –an,如果格式如下图示:
这个命令会打印出你机器与其它服务器建立的tcp连结或udp连结信息,输出的数据分为四列,第一列说明是tcp还是udp,第二列说明连结所使用的本地地址,由一个IP和端口组成;第三列说明目标机器的地址,也是由一个IP和端口组成,其中的和指的是本地地址;最后一列,是连结状态的说明,由与只有TCP是面向连结的,所以Proto为tcp的才有state说明,当State为LISTENING时,表示本地打开了端口,例如
表示本地打开了3306端口,但没有任何机器与这引端口相联;
表示我们机器上的1037端口与09上的80端口建立了连结---这是我们刚才telnet的结果。
文档评论(0)