linux 嵌入式 网络通信实验,嵌入式linux网络通信实验.doc

41528d3028836879cd698677c3999917.gif嵌入式linux网络通信实验.doc

淮阴工学院LINUX操作系统及嵌入式应用实验报告系(院)计算机工程学院专业计算机科学与技术(物联网工程)班级物联网1111姓名蒋振学号1111307116指导教师孙成富学年学期20142015学年第1学期实验1SOCKET全双工通信实验1实验目的1了解网络套接字编程2掌握网络通信服务器和客户端的工作过程3利用多线程实现全双工通信4下载并运行网络应用程序2实验环境1宿主机FEDORA102嵌入式LINUX软硬件系统TQ2440(基于S3C2440A)开发板3实验准备31LINUX下的多线程编程进程是程序执行时的一个实例,即它是程序已经执行到何种程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。本实验使用多线程解决了并行通信的难题。关于多线程的函数主要是使用PTHREADH头文件中定义的多线程操作函数,如PTHREAD_CREATE、PTHREAD_CANCEL等。32TCP/IP概述321TCP/IP的分层模型OSI协议参考模型,是基于国际标准化组织(ISO)的建议发展起来的,它分为7个层次应用层、表示层、会话层、传输层、网络层、数据链路层及物理层。这个7层的协议模型虽然规定得非常细致和完善,但在实际中却得不到广泛的应用,其重要的原因之一就在于它过于复杂。但它仍是此后很多协议模型的基础。与此相区别的TCP/IP协议模型将OSI的7层协议模型简化为4层,从而更有利于实现和使用。TCP/IP的协议参考模型和OSI协议参考模型的对应关系如下图1所示图1TCP/IP协议与OSI协议参考模型对比图322TCP的三次握手TCP是面向连接的,所谓面向连接,就是当计算机双方通信时必需先建立连接,然后进行数据通信,最后拆除连接三个过程。TCP在建立连接时又分三步走第一步(AB)主机A向主机B发送一个包含SYN即同步(SYNCHRONIZE)标志的TCP报文,SYN同步报文会指明客户端使用的端口以及TCP连接的初始序号;第二步(BA)主机B在收到客户端的SYN报文后,将返回一个SYNACK的报文,表示主机B的请求被接受,同时TCP序号被加一,ACK即确认(ACKNOWLEDGMENT)。第三步(AB)主机A也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。33套接字SOCKET概述331套接字类型1流式套接字(SOCK_STREAM)流式套接字提供可靠的、面向连接的通信流;它使用TCP协议,从而保证了数据传输的可靠性和顺序性。2数据报套接字(SOCK_DGRAM)SYNJSYNK,ACKJ1ACKK1数据报套接字定义了一种无可靠、面向无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证是可靠、无差错的。它使用数据报协议UDP3原始套接字(SOCK_RAW)原始套接字允许对底层协议如IP或ICMP进行直接访问,它功能强大但使用较为不便,主要用于一些协议的开发。332套接字编程使用TCP时SOCKET编程流程图如图2所示。SOCKET服务器端CLOSESEND/SENDTORECV/RECVFROMACCEPTLISTENBINDSOCKETCLOSERECV/RECVFROMSEND/SENDTOCONNECT客户端BIND图2TCP时SOCKET编程流程图使用UDP时SOCKET编程如图3所示。SOCKETCLOSESENDRECVACCEPTLISTENSOCKETCLOSERECVSENDCONNECTRECVFROMSENDTOSENDTORECVFROM或或或或图3TCP时SOCKET编程流程图4实验过程41简单的SOCKET通信程序设计在FEDORA10操作系统的/HOME目录下创建NETCOMMUNICATOR目录,并新建CLIENTC和SERVERC源文件,NETCOMMUNICATOR目录如图4所示。图4NETCOMMUNICATOR截图分别编写SOCKET通信的客户端和服务器端源代码。编写完毕,使用GCC编译上述CLIENTC和SERVERC源文件生成CLIENT和SERVER可执行程序X86平台,编译过程如图5所示。使用ARMLINUXGCC编译上述CLIENTC和SERVERC源文件生成A_CLIENT和A_SERVER可执行程序ARM平台。编译过程如图6所示图5编译X86SOCKET通信程序过程截图图6编译ARM平台的可执行程序PC机测试,测试结果如下图所示图7执行服务器端程序图8执行客户端程序图9服务器端接收到客户端发来的消息截图使用GCCLINUXGCC生成ARM平台下的可执行程序A_CLIENT和A_SERVER,编译结果如图10所示。图10编译ARM平台可执行程序42全双工SOCKET通信程序设计为了实现全双工通信,服务端进程和客户端进程均使用了两个线程,一个负责收,另一个负责发。在NETCOMMUNICATOR目录,并新建CLIENTV2C和SERVERV2C源文件,如图11所示,编写完毕,编译通过生成CLIENTV2和SERVERV2可执行程序。图11NETCOMMUNICATOR工作目录PC机测试,测试结果如下图所示图12客户端进程图13服务器端进程5实验总结通过本次实验,了解了LINUX环境下的SOCKET程序设计流程,对网络编程有了一定的了解,提高了动手实践的能力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值