- 浏览: 13929 次
- 性别:
最新评论
一、网络通信的基本原理
现如今,出现了各式各样的聊天平台,像微信,飞信,YY,qq,交流社区等。这些都可以实现在一个电脑或手机上给另外的电脑或手机发送你想说的话或传送文件。那它是如何实现的呢?电脑之间或手机之间,或手机与电脑之间实现信息交流的基础就是网络。在网络互通的基础上,通过特定的通信协议,就可以在相应的平台上实现真正意义上的信息交流了。
上面说的或许太理论了,那我详细的介绍下互联的实质。在电脑连上网络之后,电脑就具备了一个独立的IP地址,以便另外的电脑或机器找到;IP地址在网络中标识一台机器的位置,但是,当A机器与B机器通信时,其实是这两台机器上的程序在通信,A如果想和B通信,它还必须得知道B机器等待在那个“端口”上;就像有客人到你家做客,只知道你家在第几幢是不行滴,还得知道是几号---在计算机中,用“端口号”这个数字标识机器上需要通信的某一个程序。
每一台机器都有从0~65535个端口号,其中的每一个数字,可供一个程序通信用,通常情况下0~1024的端口要尽量避免使用---我们称它为知名端口,例如打开网页时,则连结上的是服务器
上的80端口,在地址栏不需要输入这个端口号,是因为它是默认的;
要测试服务器上是否开放了某个端口,可以使用telnet命令,连结对方的端口;如果能连结上,则证明对方的端口是打开的。
二、建立简单的服务器
这个简单的服务器能够将客户机发送来的信息显示出来,并且再回送给客户机。
第一步:在指定端口上创建一个java.net.ServerSocket对象,如下代码:
//实例化ServerSocket,给予端口号9999 ServerSocket server=new ServerSocket(9999);
第二步:当服务器创建成功后,就像的的手机开机后,进入待机状态一样,你也要让服务器进入等待状态,当然是等待其它的客户机来连结它:
//在等待客户机连结进入,进入后,生成一个Socket对象 Socket client=server.accept();
这段代码需要特别注意:调用服务器对象server.accept()方法时,程序就会“阻塞”在这个调用上,或者说”卡”到这里---直到有一个客户机连结上来,这个方法才会返回一个Socket类对象----这个对象就代表了服务器与客户机之间的连结:当你拔通我的手机时,我的机手机中可以理解为存在着一个“通话对象“,就相当于此的client对象;以后我们(服务器)与客户机的通信,就在这个Socket类型的对象client上进行(如果想同时多个客户端进行信息交流,这里需用到线程)。
第三步:从Socket连结对象上调用方法得到输入输出流:
//通过Socket对象获取输入\输出流
OutputStream out=client.getOutputStream();
InputStream ins=client.getInputStream();
以上三步关键代码可以理解为:第一步创建ServerSocket对象如你买了一部手机,端口号的给予如你给手机上了一个手机;第二步创建Socket对象如同你的手机在等待被他人呼叫;第三步输入输出流的获取就如同通话已连接,out:是你说出去;ins:是你接收到对方的话语。
下面给出简单实现服务器功能的代码:
public class Telnet { public static void main(String args[]) throws Exception{ new Telnet().init(); } private void init() throws Exception { //实例化ServerSocket,给予端口号9999 ServerSocket server=new ServerSocket(9999); while(true){ //在等待客户机连结进入,进入后,生成一个Socket对象 Socket client=server.accept(); //通过Socket对象获取输入\输出流 InputStream in=client.getInputStream(); OutputStream out=client.getOutputStream(); String chat="你好!"; byte[] b=chat.getBytes(); //服务器把信息传到Socket对象 out.write(b); //读取客户端发过来的信息 int t=in.read(); while(t!=32){ System.out.println("结束"); t=in.read(); } chat="拜拜"; byte[] c=chat.getBytes(); //服务器把信息传到Socket对象 out.write(c); //关闭输入输出流 out.close(); in.close(); //关闭socket client.close(); } } }
链接图像显示:
回车后:
这里只是简单的实现了客户端接收信息,我们还可以实现客户端与服务器之间的前台聊天功能,而不是运用后台运行连接。
客户端的前台运行实现关键代码:
//ip地址 String str="192.168.0.111" //端口号 int port=9999; Socket client=new Socket(str,port);
下面就需要你自己去想怎么解决服务器与客户端的连接及后续功能了,我就不给出代码了。
发表评论
-
线程的同步通信与线程范围内的数据共享问题
2013-10-02 22:05 1347线程的同步通信与线程范围内的数据共享问题一、线程的同步通信 什 ... -
多线程初谈——线程的创建与互斥问题
2013-10-01 18:13 1439多线程初谈——线程的创建与互斥 对于线程起初也很是不 ... -
简单的bmp文件打开与保存
2013-07-01 22:24 916简单的bmp文件打开与保 ... -
分形浅谈——科赫曲线和L-System
2013-06-24 22:47 1260分形浅谈开始接触到分行图时,感觉很难,无法下手,只能做出第一层 ... -
对关键字final、static的理解
2013-05-10 23:36 573一、final关键字 fin ... -
对关键字的理解——访问权限
2013-05-10 16:17 627关键字public、pr ... -
队列的定义及运用
2013-03-23 14:58 728队列简称队,是限制在表的一端进行插入操作,而在表的另一端进行删 ... -
重绘方法的重写利用
2013-03-22 21:44 649重绘是为了在画布上保留原始痕迹的一种方法,他的目的是用来保存你 ... -
数组的定义及递归的运用
2013-03-22 21:43 1056一、数组有一维数组、 ... -
监听器与变量的作用域
2013-03-22 21:41 736监听器是用来实现一些可控操作的工具,如你在打开一个QQ界面的时 ... -
java中的继承
2013-03-08 00:31 587Java中的接口 什么是接口?不是以class定义的类而是以i ... -
Java中类的继承、重写、自动转型以及多态
2013-03-06 01:13 746Java中类的继承、重写、自动转型以及多态 1) 类的继承 在 ... -
java的构造器方法、方法重载和引用传递
2013-03-04 23:55 765Java的构造器方法、方法重载与引用传递 一、 构造器方法 构 ... -
JAVA语言中的类与对象
2013-03-04 00:08 763Java语 ...
相关推荐
Socket是网络通信的核心,它封装了TCP和UDP等传输层协议,为开发者提供了一种简单易用的接口。在C#中,我们可以使用System.Net.Sockets命名空间中的Socket类来创建和操作Socket对象。例如,创建一个TCP服务器端...
随着信息技术的快速发展,卫星通信作为通信技术的重要组成部分,其在经济和社会发展中扮演着不可或缺的角色,尤其在网络传输中具有重要地位。文章由周桂春和王桂云撰写,他们来自海军91917部队,基于专业的军事和...
天诚通信作为通信技术领域的重要企业,其常务副总黎镜锋在通信行业内的综合布线发展方面有着深入的见解和丰富的经验。本文将以黎镜锋的观点为核心,探讨综合布线的发展历程、面临的挑战以及未来趋势。 自1988年成立...
在实际工作中,源码追踪可能涉及到跨平台、多线程、网络通信等多种复杂场景。因此,熟悉操作系统原理、网络编程、并发模型等基础知识也很重要。同时,良好的编程习惯,如模块化设计、代码整洁、测试驱动开发,都能...
通信工程是一个涵盖广泛的技术领域,涉及到信号的传输、处理和接收,涵盖了无线通信、光纤通信、网络通信等多个子领域。 首先,通信工程专业毕业生在自我介绍时,通常会强调他们在大学期间的学习经历和实践经验。...
电气自动化控制系统是现代工业生产中的核心组成部分,它涵盖了多种技术和学科,包括电子技术、计算机科学、自动控制理论、网络通信等。这篇压缩包文件“浅谈对电气自动化控制系统的思考.pdf”很可能为我们提供了关于...
首先,标题《一位计算机牛人的心得,谈计算机和数学.pdf》揭示了本文的中心议题:一位在计算机领域有深刻见解的专业人士,分享其对于计算机科学与数学间关系的心得体会。在描述中,同样的内容被重复提及,这表明文档...
当前,计算机技术与网络通信技术已经成为社会各行业不可或缺的工具,因此,高校计算机应用课程的设置不应仅局限于传统计算机科学领域,而应更加注重跨学科的融合,与不同专业的实际需求紧密结合。课程内容需要...
随着5G网络的普及和物联网的发展,这类技术将在未来的电信设备中扮演越来越重要的角色,推动视频通信进入一个全新的时代。这份资料将为读者提供宝贵的见解,深入了解这一领域的前沿技术和实践应用。
从技术应用角度看,信息论不仅影响了传统通信领域的技术革新,还深入到了现代计算机网络、信号处理、图像和语音识别、机器学习以及数据安全等多个技术前沿。比如,在数据通信中,信息论提供了理解信号传输容量与噪声...
在电信领域,通话记录、短信和网络流量数据提供了用户行为和通信模式的见解;金融领域利用大数据进行风险评估、欺诈检测和市场分析;交通领域通过监控数据优化交通流,提升运输效率。 然而,大数据同时也带来了数据...
三网融合指的是电信网、计算机网和有线电视网这三种网络通过技术手段的改造,能够提供包括语音、数据、图像等在内的综合多媒体通信业务。这一概念的核心在于实现网络资源的共享,避免重复建设和提高网络的整体效率。...
移动互联网是指通过移动通信网络,接入互联网的移动终端设备,如智能手机、平板电脑等,为用户提供在线服务的一种互联网应用模式。自从2007年苹果公司推出第一代iPhone之后,移动互联网正式开启了高速发展的阶段。...
5. **大型网站架构技术专家谈.mht**:来自行业专家的访谈或讲座记录,分享了他们在处理大型网站架构挑战时的见解和最佳实践,可能涉及技术选型、架构设计原则以及解决复杂问题的方法。 6. **Linux服务器集群系统IP...
例如,我在研究数字滤波方法时,通过查阅文献,如《浅谈微机控制中的数字滤波方法》(张辉),获得了更深入的见解,理解了算术平均值滤波方法中平滑度和灵敏度的平衡。 总之,计算机控制技术的学习不仅限于计算机...