《视频小车的android手机端控制软件毕业设计.doc》由会员分享,可在线阅读,更多相关《视频小车的android手机端控制软件毕业设计.doc(73页珍藏版)》请在三一办公上搜索。
1、 编 号: 审定成绩: 毕业设计(论文)课题 视频小车的android手机端 控制软件设计专业年级 09级通信三班学 号 0906020324 姓 名指导教师 谭国平 评 阅 人 二一三年六月计算机与信息学院 本科毕业设计(论文)任务书I、毕业设计(论文)题目 视频小车的android手机端控制软件设计II、毕业设计(论文)工作内容 以往小车只能控制不能传输视频,或者只能通过电脑方式控制,在一些环境恶劣的地区,无法有效的进行使用,大大降低了控制小车技术的发展。本文试图通过android手机,加上wifi视频小车结合,搭建一个通信平台,实现控制和视频传输功能,具有便携式,适应能力强的特点。III
2、、实现方法与要求 本课题要求利用基于Android(安卓)手机系统开发一个控制软件,该软件将通过路由器实现用WIFI技术对玩具小车进行遥控控制,包括小车前进、后退、转弯、传输图像等功能。(1)实现手机与小车WIFI连接。(2)能够通过手机对小车进行实时控制。IV、进度安排:2012年:调研相关文献与资料。2013年13周:熟悉Java程序设计2013年45周:了解单片机2013年67周:了解小车控制代码,调研视频传输方案2013年89周:熟悉android程序设计,搭建android平台2013年1011周:编写android端代码,实现平台连调2013年1214周:撰写毕业论文。IV、主要参
3、考资料1 张勇 夏家莉等人 Goolge Android开发技术2 余志龙.Android SDK开发范例大全M.人民邮电出版社,2009.73 郭宏志 Android应用开发详解4 杨志伟.基于Android的远程终端控制系统J.科技信息,2011年21期5 靳岩,姚尚朗. Google Android 开发入门与实战.人民邮电出版社6 谭浩强.C程序设计(第三版)M.清华大学出版社,2005.77 埃克尔.java编程思想M.机械工业出版社,2007.68 王保云.物联网研究综述J电子测量与仪器学报,20099 杜圣东.基于Android的物联网智能终端操作系统核心技术研究J,2010.1
4、210 景保玉.2010中国移动应用开发现状与趋势大调查,2011年01月12日11 赵亮,张维.基于Android技术的界面设计与研究J.电脑知识与技术,2009.512 公磊.基于Android的移动终端应用程序开发与研究J.计算机与现代化,200813胡汉才.单片机原理及接口技术(第二版).北京:清华大学出版社1415 16摘要 遥控技术采用无线通信技术,将两个不相连的控制器和受控端紧紧得连在一起。将原有最妨碍移动性的有线电缆移除,改用无线射频方式,大大增强了移动性。然后一般遥控技术的优点只体现在了控制上,在信息多媒体的时代,无法传输视频,这严重制约了遥控技术的发展。 近年来,随着无线通
5、信技术的发展,特别是wifi技术的成熟,遥控技术将受控端的视频等多媒体信息传到控制端,一方面增强了控制端的感官体验,又能够在人类目测不到的地方,通过视频控制受控端。 本文设计需要实现无线控制和视频传输显示两个主要功能。在排爆机器人、水文监测等各个领域,同时小车可以作为玩具的发展方向,为缺乏技术含量的中国玩具市场进行一定的技术弥补,实现经济收益,形成商业价值。【关键词】单片机,智能小车,安卓系统,STC12C5A60S2,路由器ABSTRAT Remote control technology, the use of wireless communication technology, the
6、two is not connected to the controller and the controlled end tightly together. The original most impede mobility cable removed, using radio frequency, greatly enhanced the mobility. Then the advantages of common remote control technology is embodied only in control, in the multimedia information ag
7、e, not video, which seriously restrict the development of remote control technology. In recent years, with the development of wireless communication technology, especially the maturity of WiFi technology, remote control technology will be controlled end video and other multimedia information is tran
8、smitted to a control end, a strengthening of the control end of the sensory experience, but also in the human visual not where, through the video control the controlled end. This design is required to realize the wireless control and video transmission and display of two main functions. In the field
9、s of EOD robot, hydrological monitoring, this car can be used as a toy for the direction of development, lack of technical content in the Chinese toy market to make certain technical, economic income, the formation of commercial value.【keyword】 microcontroller, intelligent car, Android, STC12C5A60S2
10、, router前言一、 课题研究背景 近年来,随着科技的发展与大家生活水平的提高智能手机已经全方位进入了我们的生活。而在这个大步迈向物联的时代,通过智能手机来遥控指挥各种事物,使人们的生活变得更加方便、舒适、安全已经成为了大家争相研究的方向。提及智能手机甚至是智能电子产品却不得不提到市面上使用最普遍、占有率最高的操作系统安卓系统。由此我选择了研究课题视频小车的安卓手机端控制软件设计,即通过安卓系统手机为终端,通过路由器进行wifi通信并控制小车,此项目为基本物联通信,可以深入研究添加更多的应用如开发排雷车,探测车,指挥车等。同时小车也可以作为玩具的发展方向,为中国玩具市场技术创新提供一个方向
11、,实现经济收益,形成商业价值。由此我们可以预知这个项目的潜力是无限的,是一个很值得去研究开发的项目。 二、课题主要研究内容 设计安卓视频小车的特点在于:小车要用手机控制而且能同步传输视频图像,这样就可以在环境恶劣的地区或人类无法进入的地区使用。它摆脱了只能用电脑操作的弊端,手机方便携带且只需安装运行软件并连接上wifi就能指挥小车工作,做到了真正的方便快捷。课题需要搭建一个通信的平台实现以上一系列功能。 三、论文结构 第一章给出安卓视频小车系统的整个框架以及在设计系统时的分析过程,叙述了框架的具体结构和组成,并确定了今后设计系统的方案。 第二章介绍了小车端。主要为小车的主体结构,小车端的硬件的
12、选择与设计。第三章主要介绍了我们设计项目时使用的android系统,让我们充分的熟悉和认识这个系统。第四章介绍做项目时android开发环境的搭建,即我们在设计项目时我们在程序端所需要做的。第五章重点介绍Java socket,socket解决了通信时数据传输问题。第六章将系统集成与调试,介绍了项目设计与项目的调试的过程,运行过程最终实现手机指挥控制视频安卓小车。 目录本科毕业设计(论文)任务书2I、毕业设计(论文)题目2II、毕业设计(论文)工作内容2III、实现方法与要求2IV、进度安排:2IV、主要参考资料3摘要4ABSTRAT5前言6一、 课题研究背景6二、课题主要研究内容6三、论文结
13、构6第一章 系统框架及设计方案分析91.系统框架92.系统总体设计方案分析9方案一:9方案二:10第二章小车端介绍11l 摄像头:11l 无线路由器:11l 单片机:13l 液晶显示器:14l 驱动电路:16l 电机:17第三章android系统简介19一、 Android 简介19二、 平台优势19三、 Android特征与优势20四、 Android的应用程序框架21五、 Android开发工具简介23六、 Android SDK 简介23七、 Android ADT简介24八、 JAVA socket简介25九、 两类传输协议:TCP;UDP25十、 基于Socket的java网络编程2
14、6第四章android开发环境搭建28一、 环境搭建28(1) JDK安装28(2) Eclipse安装29(3) Android SDK安装29(4) ADT安装31(5) 创建AVD32第五章android编程与socket通信36一、 控制界面36二、 视频传输与显示程序:38三、 控制指令发送程序40第六章系统集成与调试42一、 正确组装完小车42二、 对android程序进行复查,测试,检查是否有bug42三、 将手机的wifi功能打开43四、 打开安装在手机里的程序44总结与展望46致 谢47参考文献48附录一(关键程序)491. Control492. MySurfaceView
15、543. MainActivity60附录二(英文翻译)68第一章 系统框架及设计方案分析1.系统框架我们通过安卓系统手机终端的操作,通过路由器进行wifi通信并指挥控制小车,以此实现小车的前进、后退、停止、及直角特别是圆弧形拐弯,同时小车也通过摄像头拍摄图像并通过路由器传输实时的图像到手机终端形成了小车与手机的物联。图1-1展示了通过手机控制小车、小车反馈图像给手机的物联动作过程。 图1-1图 1-1 2.系统总体设计方案分析 在进行视频小车设计时首先我们要进行设计方案的分析,要实现手机通过WIFI控制小车,有两种方案可以实现: 方案一:通过SIM卡来实现。系统框图如图2-1所示:手机端发送
16、控制指令 小车响应控制手机用户WIFI服务器转化为串口指令小车端单片机接收指令小车端系统板接收指令 图2-1 方案二:通过小型路由器来实现。该方案是在小车端安装一个小型路由器,是小车周围一定范围具有WIFI覆盖,然后将手机连接到路由器IP地址,对其发送指令,路由器接收指令后对单片机串口发送数据指令,实现控制。系统框图如下图2-2:小车端路由器接收指令 手机端发送控制指令小车端路由器发送指令 转化为串口指令 小车响应控制 图2-2 通过比较以上两种方案。方案一虽然可以实现小车超远程控制,但开发成本较高,相对于学生来说比较复杂,而且控制过程要消耗上网流量不太实际。而方案二则相对来说易于操作,适合制
17、作玩具视频小车,因此我们选择了方案二。第二章小车端介绍 小车是本系统是受控对象,其主要职责是负责视频图像的采集,与手机的连接,接收手机发送的控制指令,翻译控制指令,并控制电机进行运动。 手机因此,小车主体主要由小型路由器、电机模块、单片机、摄像头、四个轮子这几部分组成。路由器单片机驱动电路液晶显示电 机摄像头如图2-1所示。图 2- 1图中,各个模块分工合作,形成了一个完成的受控端系统。l 摄像头:摄像头采用没有驱动的一般摄像头,由于小车的处理速度有限,因此摄像头像素不需要太高。摄像头直接与路由器相连,受路由器控制。l 无线路由器: 无线路由器可以说是小车端的心脏。他完成了连接,传输,控制等一
18、系列功能。 此处采用TP-Link无线路由器。如图2-2所示。图 2- 2功能一:负责与手机的连接。现在的基于android操作系统的手机都含有wifi芯片,可以通过wifi连接到任意的无线路由器上。无线路由器作为手机与小车连接的一个端口,使连接方式统一,方便快捷。功能二:控制摄像头将采集的视频图像,将采集的图像保存到无线路由器。为方便手机得到图像,在无线路由器中刷入web服务器,使手机可以通过网页方式提取摄像头采集到的视频图像。功能三:接收手机发送的控制指令,并将其发送的单片机,进行进一步处理。控制指令是手机与小车通信的“协议”,只有发送正确的指令,小车才会执行正常的前进、后退、旋转等操作。
19、控制指令如图2-3所示。图 2- 3从图中可以看,控制指令简单,非常易于理解。当手机向小车发送“LF”字符时,小车将左转;当手机向小车发送“L”字符,小车将左旋;以此类推。l 单片机:单片机在这里主要负责路由器和硬件控制间的连接作用。功能一:在小车上电时,单片机首先启动,负责小车各个模块的初始化工作,只有当初始化成功,并在液晶显示器上显示初始化成功后,小车才能正常接收指令。功能二:指令翻译。将路由器传来的指令,即上图所示的指令,进行翻译,按照不同的指令,来控制不同的车轮运动。并将控制指令显示在液晶显示器上。因为单片机要实现对电机驱动模块的控制,同时还要有路由器进行串口通信,为了能够控制电机转速
20、,可以使用单片机的定时器来实现,利用单片机定时器功能控制IO口产生PWM波,通过调节占空比里调节电机转速。考虑到单片机要实现以上功能,选择使用STC12C5A60S2来构成电路。STC12C5A60S2是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC12C5A60S2为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/
21、计数器,一个6向量2级中断结构,全双工串行口。另外 STC12C5A60S2 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。 此外,STC12C5A60S2设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同
22、时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。单片机TXRX与路由器相连,P1.0P1.5与电机驱动模块相连。单片机的P4口接到液晶屏的控制端,P0口接到液晶屏数据口。设置定时/计数器0工作方式为16位计数器,并对中断做出定义。其电路如下所示l 液晶显示器:显示小车现在的状态信息、调试信息,方便调试或使用时,查找各种问题。显示系统既可以选择使用LED,也可以选择使用LCD。就本系统的功能来说,使用LED已经可以实现功能,不过考虑到使用LCD,可以输出英文字符,从而使得显示系统能够更加美观,同时也能更好的达到提高自己的目的,所以最后选择使用液晶屏LCD。由于本次
23、设计所要显示的内容不多,并不需要太大的液晶屏来显示。所以选择使用1602来进行显示。1602液晶每次可以显示2行16个字符,总共32个字符,而且可以显示所有的ASCII码,包括标点,数字,英文大小写等,因此,使用该液晶屏可以很好的实现显示功能。1602显示屏的主要技术指标如表3.4所示。 1602液晶显示屏的主要技术指标LCD1620显示容量:16X2个字符芯片工作电压:4.5-5.5V工作电流:2.0mA(5V)最佳工作电压:5V字符尺寸:2.95X4.35(WXH)mm 表3.4 1602液晶显示屏共有16个引脚,其各个引脚的功能如下表,表3.5中所示。 1602液晶显示屏的各个引脚功能编
24、号符号引脚说明编号符号引脚说明1VSS电源地9D2DATAI/O2VDD电源正极10D3DATAI/O3VL液晶显示偏压信号11D4DATAI/O4RS数据命令选择端(H/L)12D5DATAI/O5R/W读写数据端(H/L)13D6DATAI/O6E使能信号14D7DATAI/O7D0DATAI/O15BLA背光源正极8D1DATAI/O16BLK背光源负极 表3.5 使用1602,所设计的显示电路部分如下图所示:l 驱动电路:由于小车自重很重,需要四个电机才能运动。如果仅仅使用单片机的输出电压进行驱动,将因为输出电流小而失败。因此必须加上驱动电路,驱动电路由四块驱动芯片组成,每块驱动芯片驱
25、动一个点击。驱动电路时双向的,当加正电压时,电机前转;当加负电压时,电机后转。 通过四个转方向,可以实现小车,前进,后退,转弯,旋转的操作。如果所示。图 2- 4l 电机: 负责小车运动。 电机驱动模块选择 由于小车底盘电机额定电压为3-12V,度电机驱动模块选择了常用5V电机驱动芯片L293D。L298N恒压恒流桥式2A驱动芯片,L298N可接受标准TTL逻辑电平信号VSS,VSS可接457 V电压。4脚VS接电源电压,VS电压范围VIH为2546 V。输出电流可达25 A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机
26、,OUT1,OUT2和OUT3,OUT4之间可分别接电动。由此可以看到,整个小车端各模块分工合作,系统设计精妙。无论是对于做小车端扩展,需要深入理解的,还是做手机端开发,只需要了解接口的,都能够在最短的时间进行上手,大大缩短了程序开发周期。本文主要做手机端开发,对小车的深入的了解有利于下一步工作顺利进行。第三章android系统简介一、 Android 简介 Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Go
27、ogle收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年11月数据显示,Android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%,且其在其他应该领域也在急速的扩张。二、 平台优势(1) 开放性在
28、优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。(2) 不受束缚在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从2007年iPhone上市后,用户可以更加方便地连接网
29、络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈。(3) 丰富的硬件这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容,如同从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。(4) 方便开发Android平台提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰,可想而知,会有多少
30、新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏如何控制正是留给Android难题之一。(5) 丰富的Google应用在互联网的Google已经走过10年度历史,从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。三、 Android特征与优势 目前市面上的主流操作系统除了安卓Android,还有Symbian、ios等,与这些操作系统相比,安卓具有如下的优点。(1) 第一个完全定制、免费、开放的手机平台 Android平台提供了从底层操作系统到上层程序界面的所
31、有软件,使用这个平台无需缴纳任何授权许可费用,同时不同厂商还可以根据自己的需求修改和扩展Android平台。(2) 支持多种硬件设备 在Android平台下,除了应用程序运行的载体虚拟机之外,支持在多种硬件下运行。(3) 应用程序之间沟通无界限 在Android平台下开发应用程序,可以方便地实现应用程序之间的数据共享,只需要经过简单的声明或者操作,应用程序就可以访问或调用其他应用程序的功能,或者将自己的部分数据和功能提供给其他应用程序使用。四、 Android的应用程序框架 应用程序框架可以方便地重用和替换手机组件。Android的程序可以采用Java开发,因为它的虚拟机(Virtual Ma
32、chine)Dalvik,只是它将Java的bytecode转成自己的格式,回避掉需要付给Sun有关Java的授权费用。因此,Android开发环境是需要JDK的。Android具备完备的开发环境:包括设备模拟器、调试工具、内存和性能分析工具,以及用于Eclipse开发环境的插件。Android的系统采用了分层的架构,这也是与其它操作系统的不同之处。Android分为四个层,从低层到高层分别是linux核心层、系统运行库层、应用程序框架层、应用程序层。Android手机软件主要采用Java语言编写,打包为.apk格式供用户下载安装到Android系统上。所以结合Java面向对象的语言特点,An
33、droid软件在游戏、界面等方面居于显著的优点。图3-1为Android系统架构图。图 3- 1简诉各层的作用1. Linux内核硬件和其他软件堆层之间的一个抽象隔离层提供安全机制、内存管理、进程管理、网络协议堆栈、和驱动程序等2. 中间件层(由函数库和Android运行时构成)函数库,主要提供一组基于C/C+的函数库 Surface Manager,支持显示子系统的访问,提供应用程序与2D、3D图像层的平滑连接 Media Framework,实现音视频的播放和录制功能 SQLite,轻量级的关系数据库引擎 OpenGL ES,基于3D图像加速 FreeType,位图与矢量字体渲染 WebK
34、it,Web浏览器引擎 SGL,2D图像引擎 SSL,数据加密与安全传输的函数库 Libc,标准C运行库,Linux系统中底层应用程序开发接口Android运行时 核心库,提供Android系统的特有函数功能和Java语言函数功能 Dalvik虚拟机,实现基于Linux内核的线程管理和底层内存管理3. 应用程序框架Activity Manager,管理应用程序的生命周期Windows Manager,启动应用程序的窗体Content Provider,共享私有数据,实现跨进程的数据访问Package Manager,管理安装在Android系统内的应用程序Telephony Manager,管
35、理与拨打和接听电话的相关功能Resource Manager,允许应用程序使用非代码资源Location Manager,管理与地图相关的服务功能Notification Manager,允许应用程序在状态栏中显示提示信息4. 应用程序提供一系列的核心应用程序包括电子邮件客户端、浏览器、通讯录和日历等五、 Android开发工具简介 开发Java程序一般会用到Eclipse工具,开发Android程序需要在Eclipse中集成Android SDK以及ADT模拟器,这样就可以方便开发及测试Android程序了,下面将介绍这几种开发环境。Eclipse是一个用于开发Java的软件集成环境,十分好
36、用,其功能非常强大,支持也特别广泛,特别是对各种开源产品的支持相当不错。Eclipse就像软件开发者的打铁铺,它一开始备有火炉、铁钻与铁锤。就像铁匠会用现有的工具打造新的工具,也能用Eclipse打造新工具来开发软件-这些新工具可扩充Eclipse的功能。Eclipse其中一个卖点就是它的扩充性,我们可以利用它更方便的在数据库JavaEE的开发、发布以及应用程序服务器的整合方面完成工作。同时它也是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能。 Eclipse平台由数种组件组成:平台核心(platform kernel)、工作台(workbench)、工作区(wor
37、kspace)、团队组件(tram component)以及说明组件(help)。六、 Android SDK 简介SDK(software development kit)是指软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。 因此,Android SDK 指的既是Android专属的软件开发工具包。开发android必须下载及安装Android SDK,现在已有很多SDK版本,本课题用是是Android API 10也就是Android2.3。下载好Android SDK后,开始安装,Android SDK采用了Java语言,所
38、以需要先安装JDK 5.0及以上版本。直接下载jdk安装文件安装更为方便。1 Android SDK不用安装,下载后,直接解压即可, 将下载后的SDK的压缩包解压到适当的位置,就这么简单;SDK安装OK。使用Eclipse进行android应用开发需要给Eclipse装adt插件,这样Eclipse就可以和android sdk建立连接,可以在Eclipse中启动android模拟器进行程序调试等ADT插件安装这里不再累赘,也可以下载adt的zip包安装 安装完插件后,需要做一些简单的配置:1) 在Eclipse中,选择Window Preference; 2) 从左侧的菜单中,选择Andro
39、id项; 3) 设置SDK Location,点Browse选择SDK的安装根目录; 4) OK,完成。七、 Android ADT简介在开发Android的过程中,不可能一直用真机进行测试,因此必须安装ADT插件,这样就可以再Eclipse中使用Android模拟器进行调试了。ADT就是一些特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。在Android中,它为开发者提供了库文件以及其它开发所用到的工具。也就是说它是开发工具包集合,是整体开发中所用到的工具包。有了这个工具包就可以对程序进行模拟器测试,如图3.3Android模拟器界面:图3.3 Android模拟器
40、界面八、 JAVA socket简介Socket主要解决了网络编程中两个主要的问题:l 如何准确的定位网络上一台或多台主机;l 找到主机后如何可靠高效的进行数据传输;在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提 出申请。服务器一般作为守护进程始终运
41、行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也 能及时得到服务。九、 两类传输协议:TCP;UDPTCP是Tranfer Control Protocol的 简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送 或接
42、收操作。UDP是User Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。UDP与TCP的比较:UDP:1. 每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。2. UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。3. UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方TCP:1. 面向连接的协议,在socket之间进行数据传输之前必然要建立连
43、接,所以在TCP中需要连接时间。2. TCP传输数据大小限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大的数据。3. TCP是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据。十、 基于Socket的java网络编程网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket通常用来实现客户方和服务方的连接。Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定。但是,Socket所支持的协议种类也不光TCP/IP一种,因此两者之间是没有必然联系的。在Java环境下,Socket编程主要是指基于TCP/IP协议的网络编程。Socket通讯的过程由Server端Listen(监听)某个端口是否有连接请求开始,Client端向Server 端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息。一个连接就建立起来了。Server端和Client 端都可以通过Send,Write等方法与对方通信。对于一个功能齐全的Socket,都要包含以下基本结构,其工作过程包含以下四个基本的步骤: