linux 嵌入式 网络通信实验,2020年新版嵌入式Linux网络通信实验.docx

淮阴工学院

Linux操作系统及嵌入式应用

实验报告

系(院):计算机工程学院

专业:计算机科学与技术(物联网工程)

班 级:物联网1111

姓名:蒋振 学号:116

指导教师:孙成富

学年学期:2014?2015学年 第_1_学期

实验1 Socket全双工通信实验

1实验目的

1)了解网络套接字编程

2)掌握网络通信服务器和客户端的工作过程

3)利用多线程实现全双工通信

4)下载并运行网络应用程序

2实验环境

1)宿主机:Fedora 10

2)嵌入式Linux软硬件系统:TQ2440 (基于S3C2440A)开发板

3实验准备

Linux下的多线程编程

进程是程序执行时的一个实例,即它是程序已经执行到何种程度的数据结构 的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内

存等)的基本单位。

线程是进程的一个执行流,是 CPU调度和分派的基本单位,它是比进程更 小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执 行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他 的线程共享进程所拥有的全部资源。

本实验使用多线程解决了并行通信的难题。关于多线程的函数主要是使用 pthread.h头文件中定义的多线程操作函数,女口 pthread_create pthread_cancel等。

TCP/IP 概述

3.2.1 TCP/IP的分层模型

OSI协议参考模型,是基于国际标准化组织(ISO)的建议发展起来的,它 分为7个层次:应用层、表示层、会话层、传输层、网络层、数据链路层及物理 层。这个7层的协议模型虽然规定得非常细致和完善,但在实际中却得不到广泛 的应用,其重要的原因之一就在于它过于复杂。但它仍是此后很多协议模型的基 础。与此相区别的TCP/IP协议模型将OSI的7层协议模型简化为4层,从而更 有利于实现和使用。

TCP/IP的协议参考模型和OSI协议参考模型的对应关系如下图1所示:

图1 TCP/IP协议与OSI协议参考模型对比图

3.2.2 TCP的三次握手

TCP是面向连接的,所谓面向连接,就是当计算机双方通信时必需先建立连 接,然后进行数据通信,最后拆除连接三个过程。TCP在建立连接时又分三步走:

第一步(A->B):主机A向主机B发送一个包含 SYN即同步(Synchronize) 标志的TCP报文,SYN同步报文会指明客户端使用的端口以及 TCP连接的初始 序号;

第二步(B->A):主机B在收到客户端的SYN报文后,将返回一个SYN+ACK 的报文,表示主机 B的请求被接受,同时 TCP序号被加一,ACK即确认

(Ack no wledgme nt)。

第三步(A->B):主机A也返回一个确认报文ACK给服务器端,同样TCP 序列号被加一,到此一个TCP连接完成。

3.3套接字(socket)概述

331套接字类型

流式套接字(SOCK_STREAM)

流式套接字提供可靠的、面向连接的通信流;它使用 TCP协议,从而保证 了数据传输的可靠性和顺序性。

数据报套接字(SOCK_DGRAM)

数据报套接字定义了一种无可靠、 面向无连接的服务,数据通过相互独立的 报文进行传输,是无序的,并且不保证是可靠、无差错的。它使用数据报协议

UDP

3)原始套接字(SOCK_RAW)

原始套接字允许对底层协议如IP或ICMP进行直接访问,它功能强大但使 用较为不便,主要用于一些协议的开发。

332套接字编程

使用TCP时Socket编程流程图如图2所示。

服务器端客户端

图2 TCP时Socket编程流程图

使用UDP时Socket编程如图3所示。

图3 TCP时Socket编程流程图

4实验过程

4.1 简单的Socket通信程序设计

在Fedora 10操作系统的/home目录下创建 NetCommunicator目录,并新建

client.c和 server.c源文件,NetCommunicator 目录如图 4 所示。

图 4

图 4 NetCommunicator 截图

分别编写Socket通信的客户端和服务器端源代码。编写完毕,使用gcc编

译上述client.c和server.c源文件生成client和server可执行程序(x86平台),编译

过程如图5所示。使用arm-linux-gcc编译上述client.c和server.c源文件生成

a_client和a_server可执行程序(ARM平台)。编译过程如图6所示.

丈件心编辑CE)查看

丈件心编辑CE)查看少终端丁标签①帮助⑹

'rootOj ones-fedo ra NetCoirmunicato r' ;root^james-fedora NetCommun

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学员在中科院学习期间独立完成制作ARM开发板、开发触摸屏驱动等36个嵌入式专题实验项目,1-3个大型项目。其他实验项目如:智能机器人等可在结业后完成。 教学周期:10个月,其中第一学期3个月,第二学期5个月,课程实训2个月。 课程编号 教学单元 教学内容 就业岗位 第一学期 教学课时3个月 ZKQ090101 网络原理及linux服务 网络概述;数据通信基础;网络体系结构与协议;局域网;网络互联与TCP/IP协议;Internet及其应用;网络连接设备与技术 •Linux下C开发人员 •面向C嵌入式开发人员 ZKQ090102 Linux安装 正确安装Linux操作系统 ZKQ090103 Linux 开发环境与应用程序设计 Linux C 编程基础,gdb调式器,Makefile文件概述;Linux系统调用原理;基于系统调用的文件I/O操作;文件上锁,程序机制与功能,特殊文件的操作;串口编程,串口通信的实现;Linux多线程编程 ZKQ090104 嵌入式Linux系统基础 Linux的进程管理,特殊进程的操作;Linux进程间的通信(一):管道通信;Linux进程间的通信(二):信号;Linux进程间的通信(三):消息队列与共享内存 ZKQ090105 FPGA1/CPLD EDA技术简介以及CPLD/FPGA 基础知识,QuartusII软件入门;硬件描述语言( VHDL)基本语法和实践;硬件描述语言( Verilog HDL)基本语法和实践;FPGA实验、DSP入门;Altium Designer 6.x电路原理图与PCB设计 ZKQ090106 Linux内核裁剪与移植 嵌入式简介;Linux 基础知识;交叉编译;Linux 内核配置;Linux 内核移植;根文件系统制作;Boot Loader 制作。 第二学期 教学课时5个月 ZKQ090201 基于ARM7开发平台设计 ARM技术简介以及基础知识,ARM应用入门;ARM启动代码分析、链接脚本讲解;μC/OS II V2.85在ARM的移植;μC/OS II内核精讲;ARM经典实验。 •高级嵌入式开发工程师 •Linux设备驱动开发工程师 •嵌入式系统工程师 •嵌入式技术支持工程师 •嵌入式软件开发工程师 •嵌入式硬件开发工程师 •ARM平台嵌入式开发工程师 ZKQ090202 基于ARM9开发平台设计 嵌入式linux开发平台简介及开发流程;嵌入式Linux开发环境的建立;多线程应用程序设计;串行端口程序设计;A/D接口实验;D/A接口实验;简单的嵌入式WEB服务器实验;RS-485通讯实验;直流与步进电机实验;内核驱动设计入门――模块方式驱动实验;内核驱动设计实验――触摸屏驱动;内核驱动设计――网卡驱动移植及实验;内核驱动设计――LCD驱动移植;音频驱动及实应用实验;USB接口试验 ZKQ090203 FPGA2/SOPC 基于NIOSII嵌入式软处理器的SOPC(可编程片上系统)系统的开发基础和设计技巧以及FPGA最小系统设计方法;SOPC实验。 ZKQ090204 Linux网络编程 Socket 套接字(TCP、UDP);原始套接字;多进程、多进程网络编程 ZKQ090205 TCP/IP协议编程 TCP/IP协议分析;构造数据包。 ZKQ090206 C++QT图形编程 Qt开发环境安装与配置;C++面向对象基础;Qt内置组件应用与自定义组件开发;Qt信号与槽机制;Qt模型应用(树、表、栈);Qt多线程与网络;Qt图形开发;Qt内置数据仓库技术(mysql、sqlite);Qt解析XML。 ZKQ090207 嵌入式Linux系统原理 Linux内核简介;进程管理及调度;中断及中断处理程序;下半部和工作队列;内核同步方法;定时器和时间管理;内存管理;进程地址空间;内核调试技术;内核可移植性概述。 ZKQ090208 嵌入式Linux驱动开发 设备驱动及内核模块概述;构造和运行模块;编写字符设备驱动程序I;编写字符设备驱动程序II;高级字符驱动程序;与硬件通信;中断处理;Linux设备模型;内存映射操作;DMA技术及应用;块设备驱动程序;网络设备驱动程序;贞缓冲设备驱动;PCI设备驱动程序;USB驱动程序。 课程实训 实训课时2个月 3-5名学员组成一个项目小组,项目自选,项目小组提交项目报告,经审核同意后拨付项目经费,在项目指导教师指导下项目实施,项目完成应有成型产品,组织召开项目完成报告会,项目小组提交项目完成报告书,项目结束。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值