中国科学技术大学电子工程与信息科学系多媒体通信实验室(Copyright2002) 动图像传输实验 一、实验目的 在一定程度上了解网络通信中多媒体通信的编程方法和基本思路。在我们的样本程序 中,对定义变量和函数调用有比较详细的注释,请同学们自己认真阅读。 二、预备知识 要求对基本网络程序的编写有一定了解。有关Winsock编程的详细知识,请参阅实验 “TCP/IP编程”的实验说明书:或参考实验室网站上网络课程资料部分:“Winsock编程指 南”(该文件摘自是BBS上“Winsock”版)。有关显示图像文件的的知识,目前多媒体实验 室没有电子版图书,请同学们自己到图书馆借阅相关的的书籍。 三、实验原理 1、样本程序的设计思路 本样本程序中发送端(server)利用定时器定时发送一帧一帧的图像(从文件读取);接 收端(Client)将接收到的数据流再次保存成一个一个文件(每个文件一帧)并即时播放。 注意:所有的进度控制放在发送端,接收端设计为收到就马上保存然后播放。 2、样本程序中有关结构体定义和主要函数 (1)结构体SOCKET _STREAM FILE INFO 结构体SOCKET STREAM FILE INFO用于描述在网络上传送的文件的基本信息。和 Windows下有关文件属性的定义是相关的。在接收网络数据的时候,根据这些信息判断接收 过程是否已经完成。 typedef struct_SOCKET_STREAM FILE INFO TCHAR szFileTitle[128]; 文件的标题名 DWORD dwFileAttributes; 文件的属性 FILETIME fCreationTime; /文件的创建时间 FILETIME ftLastAccessTime; 文件的最后访问时间 FILETIME ftLast WriteTime; ∥文件的最后修改时间 DWORD nFileSizeHigh: 文件大小的高位双字 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系network@ustc.edu.cn cxh@ustc.edu.cn
中国科学技术大学电子工程与信息科学系 多媒体通信实验室(Copyright 2002) 动图像传输实验 一、实验目的 在一定程度上了解网络通信中多媒体通信的编程方法和基本思路。在我们的样本程序 中,对定义变量和函数调用有比较详细的注释,请同学们自己认真阅读。 二、预备知识 要求对基本网络程序的编写有一定了解。有关 Winsock 编程的详细知识,请参阅实验 “TCP/IP 编程”的实验说明书;或参考实验室网站上网络课程资料部分:“Winsock 编程指 南”(该文件摘自是 BBS 上“Winsock”版)。有关显示图像文件的的知识,目前多媒体实验 室没有电子版图书,请同学们自己到图书馆借阅相关的的书籍。 三、实验原理 1、样本程序的设计思路 本样本程序中发送端(server)利用定时器定时发送一帧一帧的图像(从文件读取);接 收端(Client)将接收到的数据流再次保存成一个一个文件(每个文件一帧)并即时播放。 注意:所有的进度控制放在发送端,接收端设计为收到就马上保存然后播放。 2、样本程序中有关结构体定义和主要函数 (1)结构体 SOCKET_STREAM_FILE_INFO 结构体 SOCKET_STREAM_FILE_INFO 用于描述在网络上传送的文件的基本信息。和 Windows 下有关文件属性的定义是相关的。在接收网络数据的时候,根据这些信息判断接收 过程是否已经完成。 typedef struct _SOCKET_STREAM_FILE_INFO { TCHAR szFileTitle[128]; //文件的标题名 DWORD dwFileAttributes; //文件的属性 FILETIME ftCreationTime; //文件的创建时间 FILETIME ftLastAccessTime; //文件的最后访问时间 FILETIME ftLastWriteTime; //文件的最后修改时间 DWORD nFileSizeHigh; //文件大小的高位双字 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系 network@ustc.edu.cn cxh@ustc.edu.cn
中国科学技术大学电子工程与信息科学系多媒体通信实验室(Copyright2002) DWORD nFileSizeLow; 文件大小的低位双字 DWORD dwReserved0; 1保留,为0 DWORD dwReserved1; ∥保留,为0 SOCKET STREAM FILE INFO,*PSOCKET STREAM FILE INFO: (2)显示接收文件 void CClientDlg::ShowBmp(CDC*pDC,CString filename) { CDib dib_a; CString directory=-"E.l最后的版本实验演示传送文件AClient"; CString str=directory+"\"+filename; if(!myFile.Open(str,CFile::modeRead CFile::typeBinary)) AfxMessageBox(文件不存在I",MB OKMB ICONERROR): return; } dib a.Read(&myFile); dib_a.Draw(pDC,CPoint(0,0),CSize(360,288)); myFile.Close(); 四、实验要求 实验2人一组或一人在本机上自行操作演示。实验样本程序中发送的是一组文件,接收 端先将接收到的数据保存然后播放的是文件。请修改有关部分将接收到的数据流直接播放而 不需要经过保存文件、再从文件进行播放。由辅导老师或实验室当值老师检查通过。 五、思考题 1.样本程序中的类Cdb的建立主要是为了解决哪些问题? 2.样本程序需要进行哪些改进才能在实际中使用? 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系network@ustc.cd山.cn cxh@ustc.cdu.cn
中国科学技术大学电子工程与信息科学系 多媒体通信实验室(Copyright 2002) DWORD nFileSizeLow; //文件大小的低位双字 DWORD dwReserved0; //保留,为 0 DWORD dwReserved1; //保留,为 0 } SOCKET_STREAM_FILE_INFO, * PSOCKET_STREAM_FILE_INFO; (2)显示接收文件 void CClientDlg::ShowBmp(CDC* pDC,CString filename) { CDib dib_a; CString directory="E:\\最后的版本\\实验演示传送文件\\Client"; CString str=directory+"\\"+filename; if(!myFile.Open(str, CFile::modeRead | CFile::typeBinary)) { AfxMessageBox("文件不存在!",MB_OK|MB_ICONERROR); return; } dib_a.Read(&myFile); dib_a.Draw(pDC,CPoint(0,0),CSize(360,288)); myFile.Close(); } 四、实验要求 实验 2 人一组或一人在本机上自行操作演示。实验样本程序中发送的是一组文件,接收 端先将接收到的数据保存然后播放的是文件。请修改有关部分将接收到的数据流直接播放而 不需要经过保存文件、再从文件进行播放。由辅导老师或实验室当值老师检查通过。 五、思考题 1. 样本程序中的类 Cdib 的建立主要是为了解决哪些问题? 2. 样本程序需要进行哪些改进才能在实际中使用? 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系 network@ustc.edu.cn cxh@ustc.edu.cn