版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、淮阴工学院Linux操作系统及嵌入式应用实验报告系(院):计算机工程学院专业:计算机科学与技术(物联网工程)班级:物联网1111姓名:蒋振学号:1111307116指导教师:孙成富学年学期:20142015学年第1学期实验1Socket全双工通信实验1实验目的1)了解网络套接字编程2)掌握网络通信服务器和客户端的工作过程3)利用多线程实现全双工通信4)下载并运行网络应用程序2实验环境1) 宿主机:Fedora102)嵌入式Linux软硬件系统:TQ2440(基于S3C2440A)开发板3实验准备1.1 Linux下的多线程编程进程是程序执行时的一个实例,即它是程序已经执行到何种程度的数据结构的
2、汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。本实验使用多线程解决了并行通信的难题。关于多线程的函数主要是使用pthread.h头文件中定义的多线程操作函数,如pthread_createpthread_cancel等。1.2 TCP/IP概述1.2.1 TCP/IP的分层模型OSI协议参考模型,是基于国际标准化组织(I
3、SO)的建议发展起来的,它分为7个层次:应用层、表示层、会话层、传输层、网络层、数据链路层及物理层。这个7层的协议模型虽然规定得非常细致和完善,但在实际中却得不到广泛的应用,具重要的原因之一就在于它过于复杂。但它仍是此后很多协议模型的基础。与此相区别的TCP/IP协议模型将OSI的7层协议模型简化为4层,从而更有利于实现和使用。TCP/IP的协议参考模型和OSI协议参考模型的对应关系如下图1所示:图1TCP/IP协议与OSI协议参考模型对比图3.2.2TCP的三次握手TCP是面向连接的,所谓面向连接,就是当计算机双方通信时必需先建立连接,然后进行数据通信,最后拆除连接三个过程。TCP在建立连接
4、时又分三步走:第一步(A->B):主机A向主机B发送一个包含SYN即同步(Synchronize)标志的TCP报文,SYN同步报文会指明客户端使用的端口以及TCP连接的初始序号;第二步(B->A):主机B在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示主机B的请求被接受,同时TCP序号被加一,ACK即确认(Acknowledgment:)。第三步(A->B):主机A也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。1.3 套接字(socket概述1.3.1 套接字类型1)流式套接字(SOCK_STREAM)流式套接字提供可靠的
5、、面向连接的通信流;它使用TCP协议,从而保证了数据传输的可靠性和顺序性。2)数据报套接字(SOCK_DGRAM)数据报套接字定义了一种无可靠、面向无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证是可靠、无差错的。它使用数据报协议UDP3)原始套接字(SOCK_RAW)原始套接字允许对底层协议如IP或ICMP进行直接访问,它功能强大但使用较为不便,主要用于一些协议的开发。1.3.2 套接字编程使用TCP时Socket编程流程图如图2所示。服务器端客户端图2TCP时Socket编程流程图使用UDP时Socket编程如图3所示。图3TCP时Socket编程流程图4实验过程4.1
6、简单的Socket通信程序设计在Fedora10操作系统的/home目录下创建NetCommunicator目录,并新建client.c和server.c源文件,NetCommunicator目录如图4所示。图4NetCommunicator截图分别编写Socket通信的客户端和服务器端源代码。编写完毕,使用gcc编译上述client.c和server.c源文件生成client和server可执行程序(x86平台),编译过程如图5所示。使用arm-linux-gcc编译上述client.c和server.c源文件生成a_client和a_server可执行程序(ARM平台)。编译过程如图6所示
7、.rootjames-fedora:/mnt/hgfs/Linux/hletCommunrcator文件(E)编辑(E)查看(史至端(工)标签(工)帮助出)口口上坦:日照名写-于巳日口厂占NetConimunicatorl#gcc-clientclient.cNetConimunicatorl#gcc-oserverserver.c自NetCommunistor#口图5编译x86Socket通信程序过程截图rootjames-fedora:/mnt/hgfs/L!nux/NetCommunicator文件(F)编楫(日查看N)终端标签(工)帮助rootames-fedoraNetCommuni
8、cator#Isclientclient.cserverserver.c(rootjames-fedorarootjames-fedorarootjames-fedoraaclientaserveramps-fedoraNetCommunicator#arm-linux-gcc-oaclientclient.cNettommuriicatorj#arm-linux-gcc-oaserverserver.cNetCommunicator#Isclientclient.cserverserver.cNetCommunicator#图6编译ARM平台的可执行程序PC机测试,测试结果如下图所示:kro
9、otjames-fedorai/rnnt/hgfs/Lmux/NetCommunrc文件(E)编辑匡)查看国)挑端(工)标量(工)招助(H)rootjames-fedcraLinux#cdNetCommunicator/(root(3james-fedoraNetCommunicator#Isclientclient.cserverserver.croot(ajaniEs-fEdoraNetCommunicator#./server=waitingforclient'srequest=图7执行服务器端程序rooames-Fedloraz/mnt/hgfs/Linux/NetCommun
10、icator攵:件(E阪鬼(E)查看(旦)蟀端(工)标瞥(工)帮助(H)Irootjante&-fedora-#cd/mnt/hgfs/Linux/NetC&mrnunicator/rootjames-fedoraNetComnuinicator#Isclientdient.s&rverserver,crootjames-fedoraNetCommunicator#./clientusage:./client<ipaddre5s>root$Julies*fedoraNetCDfriinunicator#./clientwendm的toser
11、ver:HellohJamesJiang!Received:HEllDhyouareconnected!rootOjanes-fedoraNEtCpnmunicator#口图8执行客户端程序回rootjames-fedora:/mnt/hgfs/Lrnux/NetCommunic文件(日编辑(E)查看(Y)终端(工)标签(工)帮助出)rootfajames-fedoraLinux#cdNetCommjnicator/rootjames-fedoraNetCommunicator#Isclientclient.cserverserver.croottajames-fedoraNetCommuni
12、cator#./server=waitirigforclienthsrequest=recvmsgfromclient:HellopJamesJiang!t图9服务器端接收到客户端发来的消息截图使用gcc-linux-gcc生成ARM平台下的可执行程序a_client和a_serveg编译结果如图10所示。rootjames-fedora:/mnt/hgfs/Linux/NetComrnunicator文件让)僦t位)查看N)终端标签田帮助出)rootjames-fedoraNetCommunicator#Isclientclient.cserverserver.cOQtjamesfedora
13、rootjanies-fedoraroot®antes-fedoraaclientaserverr°Qtjanips-fedoraNetComffluriicator#arm-linux-gcc0aclientclient.cNetCommunicator#ann-linuxgcc-oaserverserver.cNetCcmmunicator#Isclientclient,cserverserver.cMHtConwnuniBtQ井图10编译ARM平台可执行程序4.2 全双工Socket通信程序设计为了实现全双工通信,服务端进程和客户端进程均使用了两个线程,一个负责收,另
14、一个负责发。在NetCommunicator目录,并新建clientV2.c和serverV2.c源文件,如图11所示,编写完毕,编译通过生成clientV2和serverV2可执行程序rootjames-fedora:/mnt/hgfs/lmuxNetCommunicator文件编辑(E)查看(豆)蜷端(工)标签(工)帮助出)root®awes-fedoraaclientaserverroot®ames-fedora'root®amea-fedora>ootjames-fedoraa_clientclientaserverclient.cNetCo
15、mmunicator#IsclientclientxCclientVSxCserverserver.cserverv2.cNetCommunicator)#gccNetCaminunicator#gczcNetCommunicator#IsclientV2serverclientV2kcservers-oserverV2serverV2.c-Ipthread-oclientV2clientV2.c*IpthreadserverV2serverV?croot(?jaires-fedoraNetCommunicator#|图11NetCommunicator工作目录PC机测试,测试结果如下图所示:
16、rootjames-fedora:/mnt/hgfs/Lmux/NetCommumcator文件任)编辑任)查看(丫)终端(工)标签帮助出)rooWjaiKS-fedorarootjanies-fedoraootjames-fedoraQtjames-fcd口a*#cd/mnt/hgfs/Linux/NetComfnunicator/NetConununicator#gcc-oclientVZclientV2,c-IpthreadNetCommunicator#gcc-oserverV2serverV2.c-IpthreadNetCommunicatorj#./dientVZMessagetoserver:Hello,I'mtheclient?Messagetoserver:MessageframServer:Hi,Ipnitheserver!图12客户端进程rootjames-fedora:/mnt/hgfs/Lmux/NetComniumcator文件。编辑任)查看(丫)隆端(工)标签帮助出)rootgjames-fedora*)#c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年浙江丽水市八年级地理生物会考试卷题库及答案
- 2025年湖南省初二地生会考考试真题及答案
- 2025年云南省保山市初二学业水平地生会考真题试卷+解析及答案
- 2025年广东省韶关市八年级地理生物会考真题试卷(含答案)
- 人才引进政策下劳动合同签订要点
- 2026年租房合同纠纷处理指南
- 2026年版知识产权转让合同模板及要点
- 2026年劳动合同范本:试用期管理
- 2026检验科自查报告(3篇)
- 2026教师作风整顿自查报告(3篇)
- 土石坝施工-碾压土石坝施工(水利工程施工课件)
- DL/T 5457-2012 变电站建筑结构设计技术规程
- 2023储能电站系统全面解析
- 学而思教育薪酬绩效管理制度
- 大学英语四级翻译课件
- 2022年丽江文化旅游学院教师招聘考试笔试试题及答案
- 2022年锦州市三支一扶考试真题
- 2021年公安机关人民警察基本级执法资格考试试卷(含答案)
- 山西省交口县地方国营硫铁矿资源开发利用方案和矿山环境保护与土地复垦方案
- Unit+1+Reading+The+ocean+deep课件【高效备课精研+知识精讲提升】 高中英语牛津译林版(2020)选修第一册+
- 太阳能热水机房巡检记录表
评论
0/150
提交评论