安卓聊天系统课程设计

2024-10-09

安卓聊天系统课程设计(精选6篇)

安卓聊天系统课程设计 篇1

安 卓 课 程 设 计

班 级 09级计算机二班

学 号 20097923 姓 名 郭丹

目录

第1章

安卓应用程序开发背景..........................................................3 §1.1开发背景...................................................................................3 §1.2开发环境...................................................................................4 第2章 第3章 §3.1 §3.2 §3.3 第4章

安卓应用程序开发理论与方法..............................................4 “计算器”应用程序的设计与实现.......................................6 拟解决的问题及目标.............................................................6 总体设计................................................................................7 详细设计与编码实现.............................................................7 总结.......................................................................................17 2

第1章

安卓应用程序开发背景

§1.1开发背景

1.智能手机的市场

(1)功能多样化的智能手机挑战全球PC出货量

移动互联网时代的来临,直接促进了搭载智能操作系统、具有强大扩展性的智能手机、平板电脑等移动终端产业的蓬勃发展。来自美国最大的风险投资机构KPCB的数据显示,全球智能手机出货量正在以远高于台式电脑、笔记本电脑出货量的速度快速增长,该机构预计2011年全球智能手机出货量将达到4.13亿,超过台式电脑与笔记本电脑出货量的总和。

(2)智能手机的用户使用数量正在高速增长。据市场调研机构Gartner信息,2011年全球智能手机的总出货量将会达到4.68亿部,相比2010年实现了57.7%的增长,而谷歌Android操作系统将会在今年之内成为全球最大的智能手机操作系统。另外,全球市场调研机构IDC预计未来5年中国手机市场上,智能手机替代传统功能手机的趋势将日益明显,未来5年中国智能手机市场复合增长率将达到34.1%,人们对IT设备智能化的向往是这一增长率能够实现的主要因素,并且与其他国家相比,中国智能手机市场的发展空间更加广阔。(3)操作系统格局预测:Android有望成为智能手机市场主导力量

搭载Android操作系统的智能手机目前已经成为市场上最炙手可热的智能产品。来自美国市场研究机构Gartner的数据显示,Android操作系统所占的市场份额从2008年的0.5%急剧增长到2011年的15.94%。开放的源代码和零成本已经让Android在全世界范围内受到青睐并迅速获得了主要手机厂商和数百万软件开发者的支持,Gartner预计,未来Android系统的市场份额有望超过其他操作系统,从而成为全球第一大智能手机操作系统。2.安卓手机介绍

安卓手机指的是用Android操作系统的手机。安卓(Android)是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。

同样都是手机上面用的智能系统,安卓的系统是新生系统,界面更为华丽,开源性更强,当然因为是新生系统,所以在第三方软件方面暂时还不太多。因此,安卓应用程序的需求还是很迫切的。3.软件人才需求

据业内统计,目前国内的Android研发人才缺口至少30万。由于目前Android技术较新,无论是相关书籍、培训还是大学教育,都处于初级阶段,因此Android人才短期将供不应求。从长期来看,随着各种移动应用和手机游戏等内容需求日益增加,也将激励大中小型手机应用开发商加大对Android应用的开发力度,因此Android人才的就业前景也非常广泛。

综上所述,在这样的背景下,安卓有很强的生命力。同时,作为一个新生的系统,其应用程序目前并不多,安卓应用程序的需求还是很迫切的,安卓研发人才的缺口还很大。这些都促进了我们学习开发安卓应用程序。

§1.2开发环境

安卓应用程序开发环境如下:

①JDK 5 or JDK 6(JRE alone is not sufficient)②Eclipse 3.3(Europa), 3.4(Ganymede)③Android SDK ④ADT 0.8.0 ⑤Eclipse安装ADT 插件

第2章

安卓应用程序开发理论与方法

1、Activity的相关知识

简单理解Activity 代表一个用户所能看到的屏幕,Activity 主要是处理一个应用的整体性工作。Activity是最基本的Android 应用程序组件,应用程序中,一个活动通常就是一个单独的屏幕。每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口,并对事件做出响应。大多数的应用是由多个屏幕显示组成,因而要用到多个Activity。(1)Activity的相关方法及相关函数: A、void onCreate(Bundle)首次启动时调用,接受参数:Null or savedInstanceState(保存的以前某些状态信息)B、void onStart()说明了将要显示给用户的活动

C、void onRestart()将处于停止状态的活动重新显示给用户 D、void onResume()用户可以开始与活动进行交互时调用。如动画播放和音乐播放。E、void onPause()活动将要进入后台运行时调用。(此时前台启动了另一个活动)F、void onStop()不需要某个活动了,就调用 G、void onDestroy()销毁活动

(2)多个Activity之间的跳转:

通过Intent类实现屏幕之间的跳转(包括没有参数关系和需要传递参数两种情况)。

(3)两个Activity之间进行数据交换: startActivity()只有Intent一个参数。

public void startSubActivity(Intent intent, int requestCode)(requestCode:用来标识某一个调用,一般定义一个常量。)

传过去:函数原型为: public Intent setData(ContentURI data)然后,参数带到新的Activity后,同样用Activity.getIntent()函数可得到当前过来的Intent对象,然后用getData()就取到参数了。传回来:函数原型为: public final void setResult(int resultCode, String data)

2、Intent的相关知识 Intent 是描述应用想要做什么。Android 使用了Intent 这个特殊类,实现在屏幕与屏幕之间移动。Intent 数据结构两个最重要的部分是动作和动作对应的数据。Intent类绑定一次操作,它负责携带这次操作所需要的数据以及操作的类型等。

3、Layout 用于用户界面设计。包含AbsoluteLayout,FrameLayout,GridView,LinearLayout,ListLayout,RadioGroup,TableLayout等等。

在本程序中用到的有:(1)线性布局LinearLayout 垂直:android:orientation=“vertical“ 水平:android:orientation=”horizontal“(2)相对布局RelativeLayout 让子元素指定它们相对于其他元素的位置(通过ID 来指定)或相对于父布局对象。在RelativeLayout布局里的控件包含丰富的排列属性: Layout above:控件在指定控件的上方

Layout below:控件在指定控件的下方 Layout to left of„„

第3章

“计算器”应用程序的设计与实现

§3.1 拟解决的问题及目标

本计算器程序要解决日常生活中常见的基本数据计算问题,程序要实现的目标有如下几个:

(1)要实现基本的加、减、乘、除四则运算。

(2)可以实现在前一步计算结果上继续作加、减、乘、除,即连加、减、乘、除。

(3)有清空功能,即清除所有数据,重新开始计算。

(4)可实现基本的三角函数的计算,如:正弦,余弦,正切,余切。(5)可实现一些特殊运算,如:平方,立方,开方,求对数等。

§3.2 总体设计

1、系统的软件结构图

计算器基本加减乘除运算三角函数运算其他运算加减乘法法法除法正弦余弦正余切切平方立方开方对数 图3-1

2、功能的操作流程

首先用户根据自己的实际需要选择计算的类型,然后进入不同的计算类型,再进行要执行的运算,输入数据,选择运算符号,即可得到结果。

§3.3 详细设计与编码实现

1、功能选择界面

图3-2为系统主界面。用户可以根据需要点击不同按钮进入不同功能的子界面。亦可以点击退出按钮退出本程序。

图3-2

本界面用LinearLayout来布局,主要用到的控件是Button。页面的跳转是通过intent来是实现的。跳转的主要代码如下: public void onClick(View v)

{

Button btn=(Button)v;switch(btn.getId()){ case R.id.button1: Intent intent=new Intent();intent.setClass(mycalActivity.this, secondactivity.class);startActivity(intent);break;

case R.id.button2: Intent intent=new Intent();intent.setClass(mycalActivity.this, thirdactivity.class);

startActivity(intent);break;

case R.id.button3: Intent intent=new Intent();intent.setClass(mycalActivity.this, forthactivity.class);startActivity(intent);break;

case R.id.button4: finish();

}

2、基本加减乘除界面

图3-3为加基本减乘除界面。用户在文本框中输入参加运算的数据,并点击要进行的运算符号,然后点击等号之后,将在等号下方显示结果处显示出计算结果。点击clear按钮,可以将两个文本框中的内容以及显示的结果一起清空,用户可以输入新的数据计算。

在文本框中输入时可以用图右侧的硬键盘,或者是手机自带的软键盘。

图3-3

示例如下:

(1)用户要计算1.23+2.16.在文本框1中输入1.23,点击“+”,再在文本框2中输入2.16,点击“=”,就可以显示出计算结果3.39.如下:

图3-4

(2)计算1-0.32,如图3-5 图3-5

(3)计算3.24*0.25,如图3-6所示。

图3-6

4)计算55/4,结果为13.75.如下图所示:(图3-7

(5)计算1/6.如下图所示。由图3-8可以看出,当除不尽时本计算器保留到8位小数,并且最后一位采用了四舍五入的方法,比较科学、准确。

图3-8(6)点击clear之后全部清空:

图3-9

具体的实现:主要的思路是,用户先输第一个数,然后点击运算符号,在程序中监听按钮的点击,如果点击了+、--、*、/中某一按钮,这时,就取editText1中的值,通过myeditText1= editText1.getText().toString()实现,为了参与运算,需要把字符串类型转换为浮点型,并将其值赋给变量a,代码为a=Float.parseFloat(myeditText1);用flag的不同值记录用户点击的不同的运算按钮。当用户点击“=”时,就将editText2中的内容取出,也同样转化为数值,并用b记录,然后判断flag的值即可知道对应应采取哪种计算,进而算出最终结果,并用textView1显示出计算结果。“清空”的实现是使对应控件的内容取空即可。核心代码如下:

private OnClickListener listener=new OnClickListener(){

String myeditText1;String myeditText2;float a=0;int flag=0;

float b=0;float result;public void onClick(View v){

Button btn=(Button)v;switch(btn.getId()){ case R.id.button1: myeditText1= editText1.getText().toString();

flag=1;

break;case R.id.button2:

myeditText1= editText1.getText().toString();

a=Float.parseFloat(myeditText1);

flag=2;break;case R.id.button3:

myeditText1= editText1.getText().toString();

a=Float.parseFloat(myeditText1);

flag=3;break;case R.id.button4:

myeditText1= editText1.getText().toString();

a=Float.parseFloat(myeditText1);

flag=4;break;case R.id.button5:

myeditText2= editText2.getText().toString();b=Float.parseFloat(myeditText2);

a=Float.parseFloat(myeditText1);

};

}

if(flag==1)result = a+b;

else if(flag==2)result = a-b;else if(flag==3)result = a*b;

else

result=a/b;

String s = ”显示结果: “;s += result;

textView1.setText(s);break;case R.id.button6:

} editText1.setText(”“);editText2.setText(”“);textView1.setText(”显示结果:");break;

3、三角函数运算界面

图3-10为三角函数运算界面。用户在文本框中输入参与计算的数据,然后选择点击要进行的运算类型,这时在显示结果处就会显示计算结果。例如,要计算sin30度,先在文本框中输入30,然后点击sin按钮,这时就会显示结果为0.5.同理,可进行其他计算。

图3-10

4、其他运算界面

图3-11为其他运算界面,目前可实现平方、立方、开方、求以10为底的对数四种运算,由于时间有限,这个界面目前功能并不完善,暂时实现四种运算,不过,基于本计算器程序的设计理念,本界面主要实现一些其他运算,包括一些特殊运算。在今后,这个界面可以修改和扩充,以至拥有更加完善丰富的计算功能。在现有的界面上的操作流程如下:用户在文本框中输入要进行运算的数据,然后选择点击运算按钮,即可显示运算结果。如输入0.5,点击平方,即显示结果0.25,操作方便。

图3-11

第4章

总结

在本次安卓应用程序开发之中,我收获很多,现总结如下:

安卓设计开发过程初期,我打算设计制作一个计算器。但是,刚开始并不能预测难度,不知道在短期内能否很好的完成,于是我的想法是,先实现基本的加、减、乘、除四则运算,然后在此基础上进一步完善丰富其运算功能。首先遇到的问题便是要不要做一个数字键盘。刚开始也试着做了一个键盘,是用button做的,需要很好的布局,但是每当扩充一种功能时,为了使界面整体美观,甚至都要重新设计,很麻烦。后来候突然想到手机有硬键盘,也有自带的软键盘,何不运算的时候直接调出已有的软键盘?这样,根本没有什么必要自己做键盘了,而只需做出运算的按钮即可了。由于当时的目标只是实现加减乘除,因此设计的界面是用两个文本框输入两个数据,然后有+、-、*、/四个按钮供选择,又加一个“=”按钮用于触发显示结果。界面很简单,使用很方便。然后就是才用合适的算法来实现功能。经过思考和多次修改,最后确定了一种比较简明的算法实现。

基本加减乘除功能已经实现,但是计算器的功能过于简单了,接下来便是扩充功能。我首先想到的是需要能实现三角函数运算,常见的平方、开方等运算。但是我遇到了困难。由于刚开始设计的加减乘除运算都是二元运算,因此界面设计的是在两个文本框中输入两个数,但是三角函数计算,平方开方计算都是一元运算,参加运算的数据都只有一个,因而,在原界面上直接扩充并不合适,两个文本框成了扩充的限制。后来经过思考,决定将这些扩充的功能做到别的界面上,与已有的界面相独立,重新设计,这样只需将运算分类,再做一个功能选择的界面,点击不同的运算类别进入不同的运算界面即可,这样这个问题便得到了很好的解决。但是这次设计却给了我很大的教训,开发应用软件的初期设计很重要,不仅要实现现在的目标,还要考虑以后能否进行功能扩充,设计要便于以后的功能扩充,否则,到后来需要扩充时遇到困难,甚至要推翻已有的设计,花费很大的代价。另外,由于时间紧迫,三角函数界面和其他运算界面的功能并不十分完善,只是一些基本的运算,初步体现出了设计的思想,今后还可以进行进一步的扩充,以完善其功能。

在本次开发过程中,我对开发环境进一步的熟悉,基本上可以熟练运用这个 环境,也基本掌握了安卓的开发方法及基本流程。在本次开发过程中,主要用到的知识有Activity的使用,在程序中用到了多个窗口,因而需创建多个Activity。还用到了Intent,主要是用于多个Activity之间的跳转,对Intent的作用和用法有了更进一步的熟悉。在本次程序设计中,我也对用户界面设计有了更进一步的掌握,熟练运用Layout,本次用到的主要是LinearLayout和RelativeLayout。

开发期间,我学会了有目的的去学习一些将要用到的东西,仔细地考虑工作流程的规律和步骤,充分利用手中的开发工具,利用其所具备的功能,尽量使自己的开发在代码上实现少而精确、让用户能够尽量简单地进行操作。但是在检测过程中,还是出现了很多的不足之处,这些都是要在今后的工作中需要努力改进和完善的。

在这次程序开发设计中,我也难免会遇到不少困难,这主要是由于我对所用的开发环境并不是很熟悉,开发软件的经验不足。安卓开发用的语言是java,但是我对java的学习并不多,这次开发对我来说可以算是一个全新的尝试,整个开发过程并不是很顺利,却使我从中充分体会到学习的快乐,开发的程序也在一步步得到完善。这次程序开发由于个人水平及时间有限等原因,只能完成一些基本的功能,好多设想并未完全实现,这不能不说是个遗憾,后期仍需努力。

安卓聊天系统课程设计 篇2

基于Android的操作系统原理课程辅助学习系统在任何时间、任何地点都可以通过无线网进行工作, 极大地提高了学习的质量和效率。通过后台的管理, 更好、更高效地布置任务和开展学习, 让学生能利用更多的时间在学习上, 而不是在路上。

基于安卓系统开发的辅助学习系统至少包括以下3部分:一是获取试题库试卷;二是通过各种模拟测试如选择题、判断题、简答题来对自己进行一个合理的自我检测;三是通过对自己的测试可以观察自己学习的进度和学习情况, 并且可以收集相应的问题以便于以后学习。通过无线互联网可以一次性地下载好所需要的资料并且可以长时间地保存在手机中重复使用, 在无线环境充裕的时候只需要上网下载, 这样的方法解决了手机容量小的问题, 也保证了资料的实时性。只是在需要时才对所需内容进行加载, 系统采用基于文件读取的方式来实现。通过后台的管理, 教师将最新、最好的资料实时地给予学生, 通过周围的互联网可以进行实时更新, 让学习没有滞后性, 便于学生更加高效地学习, 也便于教师更好地管理和观察学生的数据, 让学生可以解决地域和空间的局限性。

1 系统功能分析

目前, 基于安卓的学习系统属于新的一个层面, 同时将成为许多高校的选择。这个系统可以应用在所有高校中, 使其更好且更有优势地运用在学生的学习复习和管理之中。现在许多高校都通过手机发布信息, 来直接对学生进行考试的测试、作业的布置和复习资料的下发。

这个学习系统通过教师的资源在服务器上更新和学生在各个地区通过手机下载更新。

通过观察和使用其他安卓测试应用最终确定了如下的几个模块功能。

1.1 学生

(1) 学生可以通过学号姓名登录到学习系统;

(2) 学生进行单元测试;

(3) 学生进行综合测试;

(4) 进行复习资料的阅览。

1.2 教师

(1) 通过后台查看学生的考试成绩;

(2) 通过后台查看学生的反馈;

(3) 通过后台更新复习和考试资料。

2 系统模块分析

通过之前文章的分析, 最后得出通过数据库来更新题目和资料, 通过服务器来下载题目和资料, 通过学号姓名还有参加考试的时间来确定学生的身份, 并且保证学生的参与度, 通过手机自动计算出学生的成绩, 通过归纳统计来帮助老师更好地了解学生学习情况。通过基于安卓开发的辅助学习系统可以更好地进行无纸化教学, 也可以更好地了解学生的学习状态, 提高学生学习的效率。通过上述分析得出系统功能框架 (如图1) 。

3 基本功能设计

学习系统拥有4个功能:注册和登录功能, 主界面, 判断选择和收藏, 后台管理。

注册:通过对学生学号的注册, 可以查看学生登录时间、考试时间、考试内容、考试科目、错题情况。能对学生学习进行更加深入的了解。

测试:学生可以通过该系统直接在指定的时间内进行测试, 而不需要到固定地点进行测试, 提高了测试的灵动性和固定性。教师可以直接通过这个平台来进行各种模拟测试和实际测试, 直接让系统进行批改作业得出答案, 免去教师批改作业的时间, 给教师留更多的时间进行学习研究和问题探讨。

作业:教师可以随时进行后台服务器的更改和更新, 让最新的知识和题目发送到学生的移动设备上。而不需要通过短信或到教室进行告知, 可以随时在移动设备上看到。

复习:教师可以通过这款学习系统直接进行后台的更新, 将学习和复习资料进行上传, 学生也可以通过网络进行下载, 得到最新的复习和学习资料, 而不会与其他同学有资料上的缺失。

反馈:学生可以通过此款软件对于学习中所遇到的问题和情况直接通过这款软件进行反馈, 教师通过反馈直接找到解决方案, 便于教师和学生的相互交流。

4 结语

基于安卓系统开发的移动学习教育管理系统, 解决了空间和时间的局限性, 通过这个基于安卓开发的辅助学习系统, 帮助教师提高资料的利用率, 通过计算数据来反映学生的学习情况, 学生可以在任何地点、任何时间来进行学习和考试, 只要能通过无线网下载资料。教师可以通过时间和学号来辨别学生是否正常参加考试和练习, 得到的成绩不再需要手动输入, 可以直接从数据库中导出, 减少教师不必要的时间浪费, 对于学生可以不通过固定的书籍和纸质的资料来获取更多的信息从而提高该科目的成绩, 通过基于安卓开发的辅助学习系统就能完成几乎所有的资料复习和学习, 解决了资料的滞后性, 保证了学习的实时性。

基于安卓开发的辅助学习系统同时也有一定的缺点, 总结如下。

(1) 由于时间的原因, 后台并不能进行各种题目的录制, 也不能进行填空题和简答题。在考试方面还欠缺实时性的考虑, 并不能完全确认身份, 所以此次并没有对其优化。

(2) 考试时并没有直接对考试答案进行后期统计, 而是错误后直接显示。希望在后期的修改和完善中能够解决。

对于基于安卓开发的辅助学习系统的展望和意见。

(1) 在解决考试实时性的问题中可以通过间断性拍摄或者实时录制来确定身份的验证 (保证考试地点周围没有可以违反考试纪律的违规用品) 。禁止在考试期间进入后台模式。

(2) 可以直接将考试数据从数据库中导出为Excel格式, 不再需要教师手动输入。

参考文献

[1]丁永明, 纪方明.基于Android平台移动学习软件的研究与实现[J].数字通信世界, 2011 (1) :66-68.

[2]夏帮贵.基于Android平台的移动学习系统[J].西华大学学报:自然科学版, 2011, 30 (5) :81-84.

[3]傅健, 杨雪.国内移动学习理论研究与实践十年瞰览[J].中国电化教育研究, 2009 (7) :36-41.

安卓聊天系统课程设计 篇3

关键词:日语教学;日语听力;移动学习;安卓(Android)

中图分类号:TP315 文献标志码:A 文章编号:1673-8454(2015)17-0083-03

引言

2012年北大的贾积有教授就提出了便携式电子学伴[1]的概念,时至今日,移动平台已经非常成熟,出现了很多应用于教学的移动应用,例如辅助日语发音学习软件[2]以及安卓平台英语学习资源[3]的制作。与电脑相比,智能手机成为学生几乎人人必备的便携式工具,移动端的听力练习系统可以辅助完成如上课题。结合软件学院的特色,有必要开发一个基于安卓的日语听力作业系统。学习者通过触手可及的移动设备辅助学习,加强日常训练,同时采集到的数据也能够在教师一方反馈,帮助教师获取学习者的学习动态,对传统的教学方式形成有益的补充,可以提高教学效率与效果。

一、可行性分析

为了给日语学习者提供更加方便的日语听力训练的平台,手机APP是选择之一。作为一个搭建在智能平台上的应用,可为教师和学习者节省很多时间,比如拷贝音频、布置作业、批改作业等,这些都可以在云端完成;日语学习者只需要按照服务器分发的作业完成对应的训练;服务器能够自动批改,统计对错,产生各类统计数据,让教师将更多的关注放在如何为学生提供更有针对性的指导上,而不必花费大量的时间人工批改作业,对于师生来说是双赢的工具。这款应用首先在Android系统上实现,待功能成熟以后可以开始兼容IOS和Windows Phone。从技术可行性上来说,软件学院拥有得天独厚的优势,日语学习者均拥有编程背景,通过一定程度学习,可以掌握并胜任下文提到的三个方向中的任意一个,并且从亲历学习的角度提出设计需求。整个项目需要一个服务器和相应的开发环境,可以得到学校的保障,并且有大学生创新项目的支持。虽然整个项目的工程量较大,但不断打磨可以完成。

二、需求分析

对于该项目的需求,总体分为三大部分——针对教师、日语学习者、服务端。教师主要包括阅卷、审查等功能;日语学习者包含了听写、上传作业等功能;服务端需要对这些应用的功能提供对应的支持。

教师方面的功能在Web端实现,包括修改题库、添加题目、设置考试模式、查看日语学习者成绩、分数变化趋势等等,在Web上实现一个类似于后台管理的页面。

日语学习者方面的功能在手机上实现,可以拉取最新的作业,进行听力训练并提交答案,保留答题的历史。

服务端作为整个应用的支撑需要完成对日语学习者数据的采集、日语学习者和教师资源的管理,还有对应的统计信息的功能,方便教师查阅。整体功能概括如表1所示。

三、概要设计

1.数据库设计

后端服务运行在一台服务器上作为整个系统的支撑,需要管理整个系统的用户、学校、教师信息以及对应的作业管理的信息和成绩,这些数据以典型的关系型数据库MySQL来存储,图1展示了数据库的关系设计图。

题库和每个日语学习者的作业都是一一映射的,添加和修改题库通过一个全局对象来存储,每个日语学习者有自己单独的作业副本,这些副本的属性相对于全局的作业来说,多了日语学习者对作业的完成情况和对应作业的成绩。作业可以重复发布,有利于教师重复利用题库,所以将作业分为两类——存储在题库中的题目和布置给日语学习者的每日作业,统计成绩时依据该日语学习者的每日作业来计算对应的数据。如果要达到更强的针对性可以添加班级、学校对象来进行更加细致的作业划分,这样作业可以按照班级和日期来投放,有利于分类和管理。

2.交互设计

除此之外,整个系统的时序交互重点在日语学习者的学习交互、教师的管理和统计事件上,图2展示不同业务对应事件的时序关系。

日语学习者交互主要是更新手机端布置的听力材料并及时完成对应的训练,把答案提交以后,远程服务器会同步更新内容并统计相应的数据,而教师则可以管理对应的题库,查看学生成绩和分发每日作业,主要的流程按照这样的时序进行。

3.技术架构

(1)Web端

后端采取ThinkPHP这款PHP Web框架,该框架是中国技术人员开发的,有丰富的文档和案例,便于新手上手,其次该款框架设计优良,适合本应用,该框架整体遵循MVC(见图3)原则即模型(Model)、视图(View)、控制器(Controller),模型这一层主要和上面提到的数据库打交道,负责对原始的数据库操作进行封装,利用ORM(Object Relational Mapping,面向对象映射技术),将这些纯粹的SQL数据库查询语句封装成相应数据对象的方法,比如日语学习者的添加,可以作为日语学习者类的一个方法,这样就能在数据操作上和其他的部分相互解耦,提高程序的可扩展性。视图部分采取ThinkPHP自带的模板引擎,能够提高网页内容的重用率,同时可以节省重复开发的时间,另外能够做到动态显示相应的数据,模板引擎依赖于数据层的数据,通过逻辑操作以显示相应的界面内容。

这是从Web的角度出发,因为整个管理系统搭建在Web上。但是整个服务的主体还是手机应用,所以作为服务端,必要的应用层的接口是要存在的,而框架也有对应的数据封装,能够很好地承载数据的请求,控制承担Web界面和手机应用后台请求的路由以及相应请求处理的主体,通过程序的主要流程都在控制器内完成,包括作业文件存储、成绩统计等类似的输入输出操作和CPU计算操作。

(2)移动端

手机应用使用传统原生的Android开发工具链,使用Java语言进行开发,当中也采取了一定的开源UI框架,涉及ListView、Button控件和网络传输库等。使用优秀的开源框架大大缩短开发时间,可以将精力集中在业务逻辑主体上,而不用过多担心细枝末节,但是相应的代价是要熟悉一套新的API,这个学习曲线相对于不用库的曲线会更大,而且产生的问题在自己不熟悉的领域很难第一时间捕捉并解决掉。进行一定的权衡,使用开源框架优于重复纯手工完成所有工作。

一些优秀的开源Android库可以参考Github上面的一个索引,里面包括了大量的UI库和网络工具库以及图形库,可以挑选适合自己的库来进行开发。[4]本应用主要采用的是里面的ListView类库和http工具库。ListView类库主要为了实现手机应用的主要界面的列表内容,网络库则是用于与服务器沟通。与服务器的通信方式采用HTTP,并且数据格式按照JSON的格式传输,前后端统一格式和方法以后,就可以采取统一的约定进行开发。

要注意的是,该应用的几个关键点技术或者逻辑有音频的播放以及相应的作业数据同步。音频播放需要考虑具体的网络环境,比如连接的是内网的话,网络状态比较好可以采取在线播放,这样可以节省APP的存储代价,但是又要提供下载的接口方便本地重复播放,这样设计网络接口的时候就要提供两种模式,这在手机端需要资源播放设置不同模式,音频的在线播放在服务端是基于HTTP协议的Range头信息,只要服务器能够支持断点续传,那么手机就可以实现在线播放。

四、集成测试

引用百度百科来说:集成测试[5],也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常工作。一些局部反映不出来的问题,在全局上很可能暴露出来。

早期所有的代码需要经过单元测试,也就是写相应的测试用例来保证一个函数或者一个模块的可用性,集成测试则是将所有模块组合在一起进行测试,这个过程是交付验收之前必须经历的过程。在校园环境下,很大程度依赖于实际试用期反应的问题,同时结合一些自动化测试的方法来进行一些主要功能可用性的测试,经过一段时间的试用期和自动化测试后,该产品相对来说可以得到很大保障,能够维持稳定运行。

在集成测试之前,在代码上加入了单元测试,保证每个模块在解耦的同时能够保持可用性,为下个阶段的集成测试做准备。单元测试主要集中测试了,Web网页的网络请求是否可达、管理平台上对于作业的增删改查是否有效、邮件注册是否成功、听力文件是否能够和数据库同步而不产生错误等一系列功能,具体体现在必要的自动化测试的代码上,用测试代码测试实现代码。

在初步完成项目的代码实现之后,需要进行集成测试。集成测试首先一部分是在项目上线的工程中,人工模拟各个流程,不仅仅是成功的流程,应该尝试可能发生的不同情况,包括极限测试、压力测试等等,例如上传的文件是否进行了格式检查、是否禁止了非选项内答案的上传、是否限制了文件的大小、是否在断网的情况下产生提示、使用流量的时候是否可行等等,这些都是生产条件下可能没有考虑的问题,都要在实际的测试当中发现。在完成了集成测试以后,需要对代码进行必要的修改,以防止错误的情况在真实的生产环境中使用。

五、结语

该应用的开发能够辅助传统的课堂听力教学,为学生高效利用零散的时间进行听力练习提供便捷的平台,有效促进日语学习。但是整个实现过程做了一些尝试,也走了很多弯路,比如Android原生应用的优点在于使用原生接口,运行效果可以得到保障,但是跨平台却难以实现,最初设计应该综合考虑应用的移植,例如将该应用迁移到微信平台[6]上,或者使用跨平台的技术[7],例如PhoneGap(现Cordova),或者让Web应用依赖内嵌浏览器的方法来达到兼容IOS和WP的目的,最初的原型设计就应该综合考虑这些因素。在时间和人力有限的条件下,很难像互联网公司一样针对多个平台均开发原生的应用,如果较早采取有效的跨平台方法,可以免去很多后顾之忧。

参考文献:

[1]贾积有.高性价比的便携式智能电子学伴及其在传统教室的应用探讨[J].中国电化教育, 2012(3):120-126.

[2]刘玉琴,江波,姜国海.移动终端辅助日语发音学习软件的设计与实现[J].中小学电教, 2014(10):68-70.

[3]张宝,陈颖.利用App Inventor制作中小学安卓平台学习资源实例分析[J].中小学信息技术教育,2014(6).

[4]优秀Android开源项目集合 [DB/OL].https://github.com/Trinea/android-open-project.

[5]百度百科[EB/OL].http://baike.baidu.com/view/106652.htm.

[6]张志祯.移动学习的跨平台开发技术[J].中国教育网络,2013(6):29-32.

[7]姚壵.基于微信平台的任务型对外汉语听说课教学初探[R].数字化汉语教学(第九届中文教学现代化国际研讨会),2014.7:313-318.

安卓 课程学习心得 篇4

学号: 姓名: 班级:

一开始接触 Android 是从自己的手机开始的,觉得它很酷,是我喜欢的风格,然后我就通过了一些网络渠道去了解Android。在选课的时候发现有这个课程,于是我就报名了。刚开始接触 Android开发时感觉到它很有意思,在界面开发上和 web 也可以形成了相通的架构,更加方便,视觉上也是非常的酷。Android作为新兴的手机操作系统,适应潮流的发展,在一定程度上迎合了现代人们最求效率和最求完美的心态,再加上的它的先进之处,所以 Android 的发展很快,Android 的应用资源也越来越广泛,现在的 Android 正在快速形成一个只能手机王国,给人们提供日常娱乐和办公的平台,无论在哪些方面,Android 的表现总是能够让人满意,它正在快速地占领手机终端,未来的智能手机领域将是 Android 的天下,越来越多的人选用 Android平台的手机。如果说追求苹果是因为苹果的高端与美感,那么追求 Android 则是因为它的先进性开源性,也正是因为 Android 这些吸引人们瞩目的特点,才会有越来越多的人对 Android 充满激情,Android 的发展也才能这样的迅猛,所以在这里要先谢谢 Goolge,以及那些充满激情的开发者们。首先在界面上,我们同样可以通过不同布局进行设计非常酷的界面,这些界面可以通过 include 进行引入,我们可以通过一些公用的方法写个 BaseActivity 这个基类,通过继承方式比较不错的实现了 Activity 的界面,因为这样你可以 Header(头部)和 Footer(尾部)进行处理一些触发事件或者特效等。布局模式以相对模式为主,线线布局模式可以在比较简单的 include 进行完成,最重要的一点就是:我们可以自己通过重写方法或者通过实现 View 或者 Layout 等类进行扩充项目需要的布局(或者控件),在学习界面中,Android 为我们提供了很好的类似反射机制,通过 Layout 文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样可以通过java 代码直接创建View 进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的 跳转 Intent 管理,通过 Bundle 对数据在界面之间进行传输。其次在手机交互式通信服务中,学习了 Android 手机之间进行短信发送、广播、对广播的监听、服务等。

这次的课程我们主要学习了航班系统的设计,首先我们要建立航班查询:旅客就可通过网络访问该系统客户端网址,可根据旅客提供的出发时间、出发地点和目的地、舱位要求等,查询满足旅客要求的航班。通过检索可得到航班的相关信息,从而可以方便旅客订票并掌握所需信息,同时可减少工作人员的工作量。

第二,我们要建立旅客订票:旅客将订票的相关信息通过工作人员输入系统客户端。客户端将旅客的订票信息通过网络传送给服务端,服务端根据接收到的信息由航班安排系统为旅客安排座位并返回相应的确认信息给该客户端。订票信息生成后,存入相应的存储区域,并对数据库进行数据提交。客户端打印取票单及帐单给旅客,旅客在登机前,经信息核审后,即可领取机票登机。

第三,航班信息管理:航空公司可将所有航班的信息存入数据库,方便用户对航班基本信息查询,相 关工作人员可根据公司要求,经系统身份认证后登录并对航班信息进行修改等操作,从而使 航班信息便于管理。

第四:航班安排:从客户端接收到旅客的订票信息,该系统可在短时间内处理旅客航班问题。将 订票信息送往数据库并更新,客户端的航班查询信息也同步更新。节省时间的同时,也能让 旅客得到最新的航班信息。

第五,售票管理:旅客不仅可在各客户端进行机票预定,也可直接在机场的售票处购票,购票信息由系统提交到数据库进行管理更新。

第六,退票管理:机票有效期内,旅客若需退票,可在退票处进行退票。退票信息,由工作人员输入系统,系统对订票信息或售票信息进行删除更新。

第七,票销售情况核算:因为航空公司机票销售量大,而航空公司为了公司的经营,有需要在一定的时 间阶段了解公司机票的销售情况。而庞大的数据量通过人工来完成,似乎不太现实,而该系 统可帮助航空公司进行售票情况的核算。

安卓聊天系统课程设计 篇5

1 嵌入式Web服务器

操作工作者可以在Web页面中, 对PLC内有关数据信息直接访问。在利用各种Web页面的过程中, 安卓设备本身具有Web浏览器功能, 所以它可以直接访问在PLC内的数据信息。PLC是嵌入式的Web服务器监控系统硬件框架。这个系统由路由器、安卓移动设备、输入元器件、输出元器件等硬件组合而成。在这个监控结构系统中, 监测数据既可以由安卓平板电脑负责执行, 也可以由安卓手机负责执行。通常情况下, 安卓智能手机或者安卓智能电脑由只读存储器和随机存储器及CPU共同配置而成, 提高了存储信息的有效性。在这个监控系统结构中, 对路由器没有什么特别的要求, 但是对PLCC有较高的要求, 所使用的PLC需要具有嵌入式Webb服务器功能。如果PLC不具有这个功能, 就不能直接访问内存中的数据。在有网络的前提下, 安卓手机可以通过Web浏览器自动访问服务器终端的PLC, 并且实时监控PLC信息, 在监控PLC信息之后, 可以实时将这些信息反馈给按安卓移动设备, 用户再根据所反馈的信息进行操作, 确保了信息的可操作性。本文以西门子S7-1200系列PLC为基本例子。根据S7-1200系列的PLC作为Web服务器, 以下为具体开发思路:一是先连接硬件设备, 图1为完整的系统构建;二是利用HTML编辑器设备;三是采用西门子专门设置的编程软件进行组态, 并读取相应的数据;四是根据HTML页面, 生成完整的程序块;五是编程设计STEP7;六是利用STEP7功能, 启动PLC中的服务器功能, 并设置相应的IP地址;七是在安卓设备中可以直接访问在PLC内中的Web页面, 实时控制PLC。在完成上述一系列操作步骤后, 用户就可以运用安卓移动设备浏览器, 直接访问Web控制页面, 也可以现场设备展开如下操作:改变设备的工作参数;设置报警通知功能;读取现场设备的运行参数;了解现场设备工作实际情况等。

2 以触摸屏作为嵌入式Web服务器

对于Web服务器而言, 操作者在Web浏览器的作用下, 可以成功访问触摸屏, 同时也可以访问PLC内部的数据信息。在访问Web页面过程中, 可以实时访问安卓移动设备中的嵌入式服务器, 在访问嵌入式服务器之后, 便可以对PLC进行实时操作, 也可以监控现场设备。结合安卓移动设备作为监控移动终端。其实在整个监控结构系统中, 安卓手机可以实现实时监测数据信息, 对PLC并没有太多的要求, 普通型号的PLC就可以使用。但对触摸屏却有很高的要求, 所采用的触摸屏一定要有嵌入式Web服务器的多项功能, 操作工作者也可以在Web浏览器的作用下, 实时访问在嵌入式服务器的功能和作用, 实时监控现场设备, 确保设备的正常运行。但是需要注意的是, 如果设备一旦不能正常运行, 就需要操作人员及时处理这一问题, 在解决问题中, 也需要监测是否存在隐患的问题, 同时将这些隐患的问题一并解决。如果安卓手机、安卓平板电脑可以成功连上网络, 用户可以对安卓移动设备直接进行嵌入式的访问, 成功控制PLC。本文以施耐德Magelis XBTGT系列触摸屏作为基本例子, 如下为对Web服务器设计思路:一是连接硬件, 图2为完整的系统架构;二是PLC程序的编写, 在编写完成后, 自动下载到PLC中;三是利用VijeoDesigner组态软件, 直接设定出IP地址, 并且成功共享数据;四是设置程序变量属性, 将私有属性设置成为共享属性, 并在触摸屏内直接下载程序;五是PLC与调试触摸屏间的通讯, 提高程序的准确率;六是在接入网络安卓移动设备之后, 可以直接访问在触摸屏内的控制页面。在上述所有步骤完成之后, 用户可以在安卓移动设备的作用下, 直接访问Magelis XBTGT系列触摸屏服务器端的Web控制页面, 更好地控制现场设备。在开发嵌入式Web服务器中, PLC是下位机, 触摸屏是上位机, 安卓移动设备是监控终端。在这样的情况下, 安卓移动设备可以在自身所具有的Web浏览器中对其他嵌入式的服务器进行实时访问, 这一系列操作过程中都可以自动进行, 操作者根本不需要在现场手动操作设备, 既提高了工作效率, 也保证了工作质量, 同时也极大地节约了费用成本。

3 虚拟网络计算机嵌入式监控系统

虚拟网络计算机 (virtual network computing) 缩写成为VNC, 这是一种远程软件, 在RFB协议屏幕画面的作用下, 充分实现自身功能。这款软件在有网络的前提下, 不但可以传送键盘动作, 也可以传送鼠标动作, 甚至可以实时分享屏幕动画, 与其他监控系统对比来讲, 虚拟网络计算机系统功能更强大一些。在VNC系统中, 由服务器终端、客户端、协议所共同组合而成, 其中服务器端负责分享在机器运行中所出现的屏幕, 服务器端处于一个被动的位置中, 它受到其他客户端的控制, 服务器端受到VNC客户端的实时控制。但是从运行结构上来讲, VNC和操作系统之间并无明显的关系, 甚至可以说没有任何一点关系, 所以可以跨平台利用, 但是在跨平台使用中, 一定要精心排查各操作系统有无异样, 如果发现问题, 应及时解决。借助安卓移动设备, 组合成VNC键入式系统。在这个系统中有硬件设备, 也有软件设备, 主要包括:路由器、输入元器件、上位机、安卓移动设备、输出元器件等。在这个监控系统中, 安卓手机负责监测数据。同时, 在该监测系统中, 路由器可以使用普通形式的路由器, PLC也可以使用最普通的PLC, 但是上位机一定要具有接入局域网的作用。在这种开发方式利用的安卓移动平台中, 必须有NVC客户端, 在NVC客户端的作用下, 安卓移动设备才能成功访问上位机, 实时显示出在上位机中的操作界面, 控制好下位机, 对现场设备实时监控。根据步科MT4414型号的触摸屏中开发VNC方式, 如下为具体设计思路:一是连接硬件;二是PLC程序的编写;三是在触摸屏IP地质设置中, 充分利用HMIware组态软件;四是触摸屏程序的编写;五是调整试验PLC和触摸屏中的通讯, 保障程序编写的准确性;六是手机客户端的安装, 设置相应的IP地址, 成功访问在触摸屏中的各个操作页面, 实时监控下位机。在完成上述一系列步骤之后, 用户可以直接利用安卓设备操作现场设备。结合PCL作为嵌入式Web服务器中所利用的方法, 其方法是一样的, 操作方式也是相同的。在VNC键入式中的监控系统中, 监控终端是安卓移动设备, 上位机是触摸屏, 下位机是PLC。在安装移动设备中, 可以在VNC客户端的作用下, 输入相应的IP地址访问触摸屏, 可以自动完成这一系列的访问过程, 操作者不需要在现场监督和操作。

4 开发安卓监控系统APP应用程序

Application简称为APP, 最近几年, 安卓手机受到了人们的追捧和认可, 尤其是一些年轻人更是对安卓手机爱不释手。据有关调查结果表明, 年轻人之所以如此喜爱安卓移动手机, 安卓手机运行速度快和操作方便是一大原因, 其中更主要的原因是安卓系统中可以下载多种APP程序。所指的APP也就是智能手机第三方应用程序, 所以开发可以运用在监控系统中的APP, APP实现监控目标对象的作用。安卓移动设备是上位机, 监控终端也可以作为上位机, 应用PP开发方式的监控系统。在这个系统中由多种硬件设备组成, 主要包括路由器、输入元器件、安卓移动设备、PLC等器件。在此监控系统结构中, 安卓手机可以负责执行监测数据, 安卓平板电脑也可以负责监测数据。在监控系统中所运用的路由器, 可以是普通形式的路由器, 但是所运用PLC需要具备网络接入的功能, 在这里对输入元件没有什么要求, 对输出元件也没有什么特别的要求。但这种开放方式要求所运用的安卓移动平台中装有APP应用程序, 这样安卓移动设备才能在IP地址的作用下成功访问下位机, 从而实时监控现场设备。通常情况下, 在监控系统中所运用的安卓APP开放方式并不是始终不变的, 它是形式多样的, 我们以2种经常运用到的监控系统APP开放方式为主要例子。第1种, 基于安卓应用程序所开发和使用的平台, 在开发这个平台中, 需要运用到一些高级语言程序进行监控;第2种是基于组态软件, 在开发监控结构系统中, 利用组态软件, 以my SCADA为平台, 所开发的安卓APP程序为例子, 在APP程序中, 安卓移动设备作为基本载体, 如下为开发安卓移动APP的思路:一是连接硬件;二是PLC程序编写;三是运用my SCADA软件;四是安装监控系统设备APP;五是调试PLC与安卓设备中的通讯, 监控APP。在完成上述一系列步骤之后, 用户结合所开发和设计的APP客户端, 对现场设备展开操作。用户在安装APP程序之后, 可以直接访问在安卓移动设备中的数据, 也可以直接访问APP程序页面, 同时也可以对APP程序进行如下操作:重新设置和更改操作参数;设置APP程序的报警功能;读取设备输入参数等。在开发手机APP过程中, 下位机是PLC, 安卓移动设备既可以作为监控终端, 也可以作为上位机。同时, 安卓移动设备在访问APP客户端中, 可以直接访问对应的IP地址, 这样就可以对PLC实行远程监控, 操作人员可以不用在现场进行实时操作, 既节省了工作时间, 也大大提高了工作效率, 同时也确保了程序的准确性。

5 结语

总而言之, 根据在安卓平台中的嵌入式监控系统开发方法, 其中所有开发方法都是在网络系统中才能实现的, 对现场设备所采用的操作方式也都是大同小异的。在利用PLC作为嵌入式Web服务器中, 其中PLC可以是访问信息的基本载体。在运用VNC进行开发中, 触摸屏可以是安卓移动设备访问信息的基本载体。据有关研究, 不管是访问信息的载体是触摸屏, 或者是PLC, 最后都可以在终端安卓移动设备的作用下, 对目标设备实施远程访问和远程监控。

摘要:目前, 我国已经进入到信息时代, 手机和电脑已经成为人们生活和工作中不可缺少的工具。手机和电脑都是安卓系统的产物, 在运用这些装有安装系统的电脑或者手机中, 实施监控目标物体, 不但可以提高监控信息的准确性, 而且也能节省费用成本, 具有较强的实际应用价值。文章对于基于安卓的设备监控系统进行了设计与研究。

关键词:安卓设备,监控系统,设计,实现

参考文献

[1]颜光伟.设备监控管理系统研究与实现[D].成都:电子科技大学, 2013.

[2]张宪生.工厂设备监控与维修维护管理系统的设计与实现[D].长春:吉林大学, 2015.

基于TCP的C/S聊天系统设计 篇6

本聊天系统的设计采用了Client/Server模型,服务器端的一个服务地址用来监听对服务的请求,当客户端向该地址提出连接请求时,服务器端会对它的请求做出相应的反应。在本设计中,主要是实现服务器端跟客户端的简单字符交换,当实现连接后,客户端就能向服务器端发送和接收字符。

二、系统设计

1.模型及分析。本系统设计是基于TCP的。TCP是面向连接的可靠的传输协议,利用TCP协议进行通信,首先要经过三步握手,以建立通信双方的连接。一旦连接建立好,就可以进行通信。TCP提供了数据的确认和数据的重传机制,保证了发送的数据一定能够到达通信的对方。

2.C/S模型流程。在C/S模型的网络中,服务器是网络的核心,客户机是网络的基础,客户机依靠服务器获得所需要的网络资源,服务器为客户机提供网络所必须的资源。

3.系统设计及分析。在TCP/IP的网络应用中,通信的两个进程相互作用的主要模式是C/S模式,在Internet上的聊天系统是服务器提供服务端的连接响应,使用者通过客户端程序登录到服务器后,即可与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。程序要在TCP/IP环境下实现服务器端和客户端的两部分程序。在VC中进行WINSOCK的API编程开发的时候,需要在项目中使用下面的三个文件,否则会出现编译错误:(1)WINSOCK.H:这是WINSOCK API的头文件,需要包含在项目中。(2)WSOCK32.LIB:WINSOCK API连接库文件。在使用中,一定要把它作为项目的非缺省的连接库包含到项目文件中去。(3)WINSOCK.DLL:WINSOCK的动态连接库,位于WINDOWS的安装目录下。

(1)服务器端socket的操作。第一,初始化阶段调用WSAStartup()。首先定义一个WORD类型的变量,wVersionRequested,用来保存Winsock库的版本号,接着调用MAKEWORD宏创建一个包含了请求版本号的WORD值,之后调用WSAStartup函数加载套接字库。接下来判断wsaData.wVersion的低字节和高字节是否都等于1,如果不是我们所请求的版本,调用WSACleanup函数,终止对Winsock库的使用并返回。第二,创建套接字(Socket)。初始化WinSock的动态连接库后,需要在服务器端定义一个SOCKET类型的变量,用来接收socket函数返回的套接字。对socket函数来说,第一个参数只能是AF_INET;基于TCP协议的网络程序,需要创建的是流式套接字,将socket函数的第二个参数设置为SOCK_STREAM;将其第三个参数指定为0,该函数可根据地址格式和套接字类别自动选择一个合适的协议。第三,将套接字绑定到一个本地的地址和端口(bind)。为服务器端定义的该监听的Socket指定一个本地的地址及端口,这样客户端才知道要连接哪一个地址的哪个端口,为此要调用bind()函数。在绑定之前,定义一个SOCKET_IN类型的变量,然后对该地址结构变量的成员进行赋值。第四,将套接字设为监听模式(listen),准备接收客户请求。当服务器端的Socket对象绑定完成之后,服务器端必须建立一个监听的队列来接收客户端的连接请求。Listen()函数使服务器端的Socket 进入监听状态,第一个参数是将要设置的套接字,第二个参数是可以建立的最大连接数(目前最大值限制为 5,最小值为1)。第五,等待客户请求到来,接受连接请求,返回一个新的对应于此次连接的套接字(accept)。调用accept函数等待并接受客户的连接请求。此时,也需要定义一个地址结构体SOCKETADDR_IN的变量,用来接收客户端的地址信息。作为服务器端,它需要不断的等到客户端的连接请求,所以程序进入一个死循环,让服务器端程序能够不断运行。第六,与客户端进行通信(send/recv)。可以利用recv函数接收客户端发送的数据,调用send函数向客户端发送数据。第七,关闭套接字。服务器或客户机的任一端启动,调用closesocket()就可关闭通信连接,而要关闭Server端监听状态的socket,同样也是利用此函数。另外,与程序启动时调用WSAStartup()相对应,程式结束前,需要调用WSACleanup()来通知Winsock Dll释放Socket所占用的资源。

(2)客户端Socket的操作。第一,创建客户端的Socket。客户端应用程序首先调用WSAStartup()函数来与Winsock的动态连接库建立关系,然后调用socket()来建立一个TCP socket。socket函数第一个参数只能是AF_INET,socket函数的第二个参数设置位SOCK_STREAM,其第三个参数指定为0。第二,向服务器提出连接申请。对客户端来说,它不需要绑定,可以直接连接服务器端。调用connect()函数来提出与服务器端建立连接的申请,首先定义一个地址结构体变量,并对其成员进行赋值,设定服务器端的IP地址和端口。本程序中服务器端和客户端都是本地的,所以可以使用一个特殊的IP地址:127.0.0.1,这是本地的回路地址。第三,和服务器端进行通信。当建立连接后,就可以调用send函数向服务器端发送数据了,之后调用recv 函数接收服务器发送的数据。第四,关闭套接字。当完成通信后,调用closesocket函数关闭套接字,释放为此套接字分配的资源。最后调用WSACleanup函数,终止对套接字库的使用。

参考文献

[1]孙鑫,余安萍.VC++深入祥解[M].北京:电子工业出版社,2006:223

上一篇:雨人英文优美句子下一篇:中大文博真题汇编