优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

基于局域网的图像传输系统

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:
研究背景及意义 数字图像处理在网络传输领域有着广泛的应用,特别是视频传输等技术在网络播放器中占有重要的地位。随着计算机科学以及快速傅立叶变换(FFT)理论、小波分析、马尔柯夫随机场、分形理论、数学形态学、人工智能和神经网络的发展,数字图像压缩技术获得了飞速的发展,并已取得了成功的应用。图像压缩是图像视频处理、传输和存储中的关键环节,其主要优点就是降低计算机的处理压力,减少通信的带宽,保证系统的实时性和节约存储空间。目前开展的图像压缩大多基于离散余弦变换(DCT)和小波变换(WT)技术,常用标准有JPEG标准和MPEG标准等。为了获得更高的压缩比和更加优良的图像/视频质量,关于这方面的研究仍在继续。本文的研究就是在这种情况下展开的。针对网络传输要求可靠性及图像传输量大的特点,开展基于局域网的图像的传输技术研究,以获得更加稳定的图像质量和进一步减少传输及存储数据量。 1.2本文的研究内容 在上一节中主要分析了软件研究的背景及意义。本文就是签于此展开研究的。图像的局域网传输是视频文件传输的重要部分,本文在此只设计网络版本的图片传输。包括两大部分:第一,图片的压缩,采用jpeg压缩标准对图像进行压缩,然后当服务端接收到文件后,将压缩编码解码,还原为原来的图像格式以保证传输的无损害性。第二,通信部分,主要是建立不同机器上的网络连接,通过Socket建立点对点的传输。 1.3本文章节安排 本文章节安排如下:第一章? 简单介绍课题的研究背景及意义第二章? 介绍软件的开发平台和工具第三章? 介绍本文涉及的主要技术基础第四章? 具体阐述软件的设计与实现第五章? 系统的测试 WinSock 简介 Windows下网络编程的规范-Windows Sockets是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。 WinSock通信的基础是套接口(Socket),一个套接口是通讯的一端。在这一端上你可以找到与其对应的一个名字。一个正在被使用的套接口都有它的类型和与其相关的进程。套接口存在于通讯域中。通讯域是为了处理一般的线程通过套接口通讯而引进的一种抽象概念。套接口通常和同一个域中的套接口交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。Windows Sockets规范支持单一的通讯域,即Internet域。各种进程使用这个域互相之间用Internet协议族来进行通讯(Windows Sockets 1.1以上的版本支持其他的域,例如Windows Sockets 2)。套接口可以根据通讯性质分类;这种性质对于用户是可见的。应用程序一般仅在同一类的套接口间通讯。不过只要底层的通讯协议允许,不同类型的套接口间也照样可以通讯。用户目前可以使用两种套接口,即流套接口和数据报套接口。流套接口提供了双向的,有序的,无重复并且无记录边界的数据流服务。数据报套接口支持双向的数据流,但并不保证是可靠,有序,无重复的。也就是说,一个从数据报套接口接收信息的进程有可能发现信息重复了,或者和发出时的顺序不同。数据报套接口的一个重要特点是它保留了记录边界。对于这一特点,数据报套接口采用了与现在许多包交换网络(例如以太网)非常类似的模型。 一个在建立分布式应用时最常用的范例便是客户机/服务器模型。在这种方案中客户应用程序向服务器程序请求服务。这种方式隐含了在建立客户机/服务器间通讯时的非对称性。客户机/服务器模型工作时要求有一套为客户机和服务器所共识的惯例来保证服务能够被提供(或被接受)。这一套惯例包含了一套协议。它必须在通讯的两头都被实现。根据不同的实际情况,协议可能是对称的或是非对称的。在对称的协议中,每一方都有可能扮演主从角色;在非对称协议中,一方被不可改变地认为是主机,而另一方则是从机。一个对称协议的例子是Internet中用于终端仿真的TELNET。而非对称协议的例子是Internet中的FTP。无论具体的协议是对称的或是非对称的,当服务被提供时必然存在"客户进程"和"服务进程"。一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户对这个服务的地址提出了连接请求。在这个时刻,服务程序被"惊醒"并且为客户提供服务-对客户的请求作出适当的反应。这一请求/相应的过程可以简单的用图表示。虽然基于连接的服务是设计客户机/服务器应用程序时的标准,但有些服务也是可以通过数据报套接口提供的。 数据报套接口可以用来向许多系统支持的网络发送广播数据包。要实现这种功能,网络本身必须支持广播功能,因为系统软件并不提供对广播功能的任何模拟。广播信息将会给网络造成极重的负担,因为它们要求网络上的每台主机都为它们服务,所以发送广播数据包的能力被限制于那些用显式标记了允许广播的套接口中。广播通常是为了如下两个原因而使用的:1. 一个应用程序希望在本地网络中找到一个资源,而应用程序对该资源的地址又没有任何先验的知识。2. 一些重要的功能,例如路由要求把它们的信息发送给所有可以找到的邻机。被广播信息的目的地址取决于这一信息将在何种网络上广播。Internet域中支持一个速记地址用于广播-INADDR_BROADCAST。由于使用广播以前必须捆绑一个数据报套接口,所以所有收到的广播消息都带有发送者的地址和端口。 3.1.2 通信原理 通过Winsock可实现点对点或广播通信程序,实际这两者之间的区别不大,编程时其程序流程所用代码几乎相同,不同的地方在于目标地址选择的不同。本文中所举实例为点对点的形式,并以客户/服务器形式来构建通过Winsock进行通信的点对点通信,并对通信过程的两点分别命名为Server和Client。为更清楚的说明出Winsock的原理,下面以电信局的普通电话服务为比较对象进行说明: 1、电信局提供电话服务类似版主们这的Server,普通电话用户类似版主们这的Client。 2、首先电信局必须建立一个电话总机。这就如果版主们必须在Server端建立一个Socket(套接字),这一步通过调用socket()函数实现。 3、电信局必须给电话总机分配一个号码,以便使用户要拨找该号码得到电话服务,同时接入该电信局的用户必须知道该总机的号码。同样,版主也在Server端也要为这一套接字指定一port(端口),并且要连接该Server的Client必须知道该端口。这一步通过调用bind()函数实现。 4、接下来电信局必须使总机开通并使总机能够高效地监听用户拨号,如果电信局所提供服务的用户数太多,你会发现拨打电信局总机老是忙音,通常电信局内部会使该总机对应的电话号码连到好几个负责交换的处理中心,在一个处理中心忙于处理当前的某个用户时,新到用户可自动转到一下处理中心得到服务。同样版主们的Server端也要使自己的套接口设置成监听状态,这是通用listen()函数实现的,listen()的第二个参数是等待队列数,就如同你可以指定电信局的建立几个负责交换的处理中心。 5、用户知道了电信局的总机号后就可以进行拨打请求得到服务。在Winsock的世界里做为Client端是要先用socket()函数建立一个套接字,然后调connect()函数进行连接。当然和电话一样,如果等待队列数满了、与Server的线路不通或是Server没有提供此项服务时,连接就不会成功。 6、电信局的总机接受了这用户拨打的电话后负责接通用户的线路,而总机本身则再回到等待的状态。Server也是一样,调用accept()函数进入监听处理过程,Server端的代码即在中处暂停,一旦Server端接到申请后系统会建立一个新的套接字来对此连接做服务,而原先的套接字则再回到监听等待的状态。 7、当你电话挂完了,你就可以挂上电话,彼此间也就离线了。Client和Server间的套接字的关闭也是如此;这个关闭离线的动作,可由Client端或Server端任一方先关闭。有些电话查询系统也是这样的。关闭套接字的函数为closesocket()。从以上情况可以看出在服务器端建立一个套接字,并进入实际的监听步骤的过程如下:socket()->bind()->listen()->accept()那accept()完了后,版主们说在Server端将生成一个新的套接字,然后Server将继续进入accept()状态,版主们该如何用这个新的套接字来进行与Client端的通信呢,这就用到了recv()函数,而Client端则是通过send()函数来向服务器发信息的。在客户端也是采取类似的过程,在客户端和服务器调用Winsock的过程类似:?? socket()->connect()->send()首先建立一个socket,然后用connect()函数将其与Server端的socket连接,连接成功后调用send()发送信息。