




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目目 录录 摘 要.1 ABSTRACT.2 前 言.3 第 1 章 多功能聊天系统的总体设计.4 1.1 软件功能需求分析.4 1.2 主程序与功能模块之间进行沟通的原理.5 1.3 主程序与三个模块之间交流过程.6 第 2 章 文字聊天模块的分析与设计.10 2.1 主要实现原理.10 2.2 聊天模块具体的实现步骤.10 第 3 章 文件传输模块的分析与设计.17 3.1 程序的实现原理.17 3.2 文件传输原理.18 3.3 具体实现过程.18 第 4 章 语音聊天模块的分析与设计.25 4.1 语音聊天模块的分析.25 4.2 语音聊天模块的设计思路.25 4.3 语音聊天程序的实现步骤.25 4.3.1 添加控件.25 4.3.2 实现音频压缩类.26 4.3.3 实现音频采集与回放类.27 4.3.4 实现主对话框类.28 第 5 章 主要界面分析与设计.29 5.1 SOCKET的异步模式.29 5.1.1 实现非阻塞通信的函数介绍.29 5.1.2 控制 socket 的模式的函数介绍.29 5.1.3 客户端与服务器端的连接.30 5.2 托盘功能的实现.30 5.3 主程序设计.31 5.4 界面模块实现步骤.32 5.5 总体运行情况.35 结 束 语.37 参 考 文 献.38 致 谢.39 附 录.40 湖南工程学院毕业设计(论文) 多功能聊天系统的设计与实现多功能聊天系统的设计与实现 摘 要:随着互联网技术的飞速发展,基于网络的即时通信给人们带来诸多便利,也 成为当今网络应用的主流。聊天工具作为当今使用最为广泛的通信工具之一,可以方 便人们随时随地进行在线交流,发挥了即时性通信的特点。它不仅可以让用户进行文 字聊天,而且还增添语音功能。这样可以让网上的好友身临其境的面对面的聊天,让 彼此之间更为深入的了解。人性化的设计让每个用户都可以得心应手的使用,从而获 得更多人的青睐。 本毕业设计就是模拟 QQ 聊天软件,采用 C/S 模式,用利用 Visual C作为开发 工具来实现这个聊天程序,先将文字聊天、文件传输、语音聊天三个模块设计成可执 行文件,然后进行调用。 关键字:互联网;聊天软件;C/S 模式;Visual C 多功能聊天系统的设计与实现 Chat Multifunction System Design and Implementation ABSTRACT:With the rapid development of Internet technology, the instant communication based on the network brings lots of convenient, and becomes the mainstream of network application. As the most widely used communication tools, chat tools can make people online communication conveniently anytime; play a feature of the instant communication. Those tools not only can let users chat with text, but also add speech function. This can make online friends face-to-face chat personally; make each other more in-depth understanding. This humanization design makes each user handy uses, thus obtains more favor. The graduation design simulated the chat using QQ software, used the C/S mode, realized this program with Visual C + + tool. Firstly, made the modules designed which conclude texts chat, text transfer, and voice chat, and then call it. Keywords: Internet; Chat software; C / S mode; Visual C 湖南工程学院毕业设计(论文) 前 言 21 世纪是信息的时代,随着互联网技术的发展,信息在传递方面也有了崭新的一 面。现今聊天软件成为信息传递最为广泛的应用工具,它发挥了即时性通信的特点, 可以让用户在第一时间内得到信息的交流,它不仅可以让用户进行文字聊天,而且还 增添语音、视频功能。这样可以让网上的好友身临其境的面对面的聊天,让彼此之间 更为深入的了解。人性化的设计让每个用户都可以得心应手的使用,从而获得更多人 的青睐。Internet 的出现连通了整个世界,而聊天软件的出现则连通了每一位网上的用 户。随着网络应用的发展,聊天软件已经成为最热门的网络应用之一。经历了近几年 突飞猛进的发展之后,即时通讯工具早已不再是简单的互联网通讯工具,它已经成为 一个集互动交流、休闲娱乐、信息管理为一体的多元化互联网应用平台。总之,聊天 软件的出现给人们彼此之间的沟通带来了无比的方便,人们可以通过聊天软件建立深 刻的友情,让人们在互联网上的交流更加充满活力与生机。 Windows 环境下多功能聊天程序的总体设计思路和设计方法如下:程序采用 C/S 模式进行设计,先将文字聊天、文件传输、语音聊天三个模块设计成可执行文件,然 后进行调用。用 CSocket 编程设计网络通讯。界面设计部分采用 Windows MFC 框架。 这样做的优点在于三个模块都可以独立实现,避免复杂的线程设计,线程操作而由操 作系统实现,可同时进行的操作的数量大大增加。又撇去 C/S 模式中的每个客户端的 信息需要通过服务器中转的弊端,使得每个用户面对的界面不受其是服务器还是客户 端的影响,把主界面做成服务器,而对于相关的功能做成客户端,用其他的.exe 文件 处理发送给对方的服务器。 多功能聊天系统的设计与实现要解决的问题主要是完成添加好友、文字聊天、文 件传输、语音聊天几个主要功能模块。 多功能聊天系统的设计与实现 第 1 章 多功能聊天系统的总体设计 1.1 软件功能需求分析 文字聊天、文件传输和语音聊天这三个功能都可以独立为一个 MFC 工程;增加实 现类似 QQ 主界面的主程序工程,添加好友功能可在主程序中实现,同时主程序还负 责两端通信,协调调用相应模块。软件模块结构如图 1.1 所示。 主程序 MainBoard 文 字 聊 天 Talk 文 件 传 输 File Transfer 语 音 聊 天 Speak 好 友 添 加 Add Friend 图 1.1 软件模块结构 总体来说软件采用 C/S 结构进行设计,但是将文字聊天、文件传输、语音聊天三 个模块设计成可执行文件进行调用,一个原因是这三个模块都可以独立实现,另一个 原因就是为了实现三个模块可同时被调用,如果将三个模块都在主程序中实现,那么 就需要进行复杂的线程设计,并且每个模块都通过主程序进行通信,就会严重限制同 时可进行的操作。例如如果将三个模块都在主程序中实现,只能同一好友进行语音聊 天,同另一个好友进行文件传输等少量的操作,因为对于线程的操作将要求在主程序 中实现,而如果将三个模块独立成可执行文件,则可以线程操作而由操作系统实现, 可同时进行的操作的数量大大增加。同时这样设计撇去 C/S 模式中的每个客户端的信 息需要通过服务器中转的弊端,使得每个用户面对的界面不受其是服务器还是客户端 的影响,把主界面做成服务器,而对于相关的功能做成客户端,用其他的.exe 文件处 理发送给对方的服务器。主界面主要处理系统相关简单的消息:添加好友,同意身份 验证,同时调度所有的可执行文件处理相关事务。 采用 C/S 结构进行设计的优缺点: (1) 优点: 客户端占用服务器的监听端口时间短,不会出现客户端因为服务器监听事件数 湖南工程学院毕业设计(论文) 量不够而造成的连接不上的问题; 调用每个可执行文件,目的明确,容易实现分工,同时容易调试和测试; 每个可执行文件容易改写成.dll 的文件(腾讯公司的产品就是利用动态连接库 实现消息通信的) ,文件之间相对独立减轻服务器的负担; 在软件编辑过程中没有使用太多的线程,思路清晰,有利于代码的读写,同时 也减轻了程序员的负担。 (2) 缺点:程序之间通过文件显式通信,文件内容未经加密,容易被加以利用。 如果不改变使用中转文件的方法,最好是对程序加以改进,对写入文件的内容进行加 密。 1.2 主程序与功能模块之间进行沟通的原理 主程序使用 WinExec()函数调用其他可执行文件,但是此函数只单纯调用,功能模 块与主程序之间的如何进行沟通是一个必须解决的问题。在这里,我们使用一种简单 的方法:即主程序与其他模块之间通过文件进行交流,主程序将模块所需信息写入文 件中,然后调用功能模块的可执行文件,功能模块的可执行文件启动后从此文件中读 取信息,这样就完成了两者之间的沟通。 这是主程序与功能模块之间进行沟通的原理,但在具体实现的时候,文件中存储 的信息必须遵循一定的格式,在这里我们设计双方进行交流的信息格式为: 事件类型#对方 IP#对方用户名#数据# 并且在程序序中定义结构体 Message 来存储此信息,Message 结构体的定义如下: struct Message /主界面之间的信息体 int sign; /事件类型 char msg1000; /存储该格式中后面的所有信息 msg; 信息格式如下: (1)事件类型:文字聊天,文件传输,好友添加和语音聊天这4 个功能都包括有两 种状态接受信息或者主动发送信息,在事件类型中通过一个数字来表示这些不同状 态。4 个功能总共有八种状态,因此事件类型的取值为0-7,其代表的状态如表1.1 所示。 多功能聊天系统的设计与实现 表1.1 事件状态及取值 取 值状 态 0发送文字信息 1接收到文字信息 2发送语音聊天请求 3应答语音聊天请求 4发送传输文件请求 5应答传输文件请求 6请求添加好友 7接收到添加好友请求 (2)对方 IP 和对方用户名:是指主程序通过这两部分将通信对象传递给功能模块, 然后此功能模块可直接跟对方进行通信,不必经过本方的主程序。对方 IP 和对方用户 名可通过两种途径得到:一种是主动与对方通信,则主程序从好友列表中获取 IP 地址 和用户名;另一种是对方请求通信,发送的请求信息中包含有对方 IP 地址和用户名, 则主程序从对方传递的信息中解析出 IP 地址和用户名。 (3)数据:这是一个可选项。这个部分只在进行文字聊天的时候存储聊天内容, 在进行其他操作的时候则省略。 1.3 主程序与三个模块之间交流过程 主机 A 与主机 B 是通信双方,网络设置如图 1.2 所示。 主机 A IP:192.168.0.1 主机名:hostA 主机 B IP:192.168.0.2 主机名:hostB 图 1.2 网络设置 湖南工程学院毕业设计(论文) (1)添加好友。此功能在主程序中实现,因此不需要中转文件。 图 1.3 描述了主机 A 将主机 B 添加为好友的全部过程。 主机 A 主机 B Mainboard 知道 B 的 IP 地址,如 果 conenct 成功,则向B 发送请 求信息: 6#192.168.0.1# Mainboard 接收到 A 的请求,若 同意被 A 添加为好友,则向 A 回复请求: 7#192.168.0.2# hostB # Mainboard 接收到 B 的回复,则 将 B 添加到自己的好友列表中, 用此列表中的一项保存 B 的 IP 地址和主机名 图 1.3 添加好友的过程 由以上过程可以看出,主机 A 向主机 B 提出请求,成功后,主机 A 存储了主机 B 的信息,但是主机 B 并没有主机 A 的信息,因此还要主机 B 向主机 A 提出申请才能得 到主机 A 的信息。所以图 1-3 所示的添加好友的过程序要进行两次。双方成为好友后, 就可以开始进行其他的操作了。 (2)文字聊天。中转文件为“msg.txt”。 图 1.4 描述了主机 A 向主机 B 发送文字消息“aaa”的完整过程。 文字聊天过程中,聊天内容的发送由 Talk.exe 进行发送,但是聊天内容的接收由 主程序进行接收,因此 Talk.exe 在实现时只需确定发送信息的端口,不需要接收信息 的端口。 (3)传送文件。中转文件为“file.txt”。 图 1.5 描述了主机 A 向主机 B 请求发送文件的过程。 从图 1.5 可以看到,在进行文件传输时,请求和回复请求阶段的信息传递是在两端 的主程序之间进行,同意发送文件后,则由两端的文件传输模块实现文件的发送和接 收,不需要再经过主程序。 多功能聊天系统的设计与实现 主机 A 主机 B Mainboard 知道 B 的 IP 地址, 向 msg.txt 文件中写入信息: 0#192.168.0.2# hostB # 调用 Talk.exe Mainboard接收到A发送的聊天 信息,向 msg.txt 中写入: 1#192.168.0.1# hostA # aaa # 调用 Talk.exe Talk.exe 启动,读取 msg.txt 解析出 B 的 IP 地址和名称, 用户在 Talk.exe 中输入聊天内 容“aaa”。 Talk.exe 向 B 的主程 序发送信息: 1#192.168.0.1# hostA # aaa # Talk.exe 启动,读取 msg.txt 解析出聊天内容:aaa 将聊天内容显示在 Talk.exe 的 界面上 图 1.4 主机 A 向主机 B 发送文字消息的过程 主机 A 主机 B Mainboard 知道 B 的 IP 地址, 向 B 发送语音聊天请求: 4#192.168.0.1# hostA# Mainboard 接收到 A 的请求, 如同意接收文件,则回复: 5#192.168.0.2# hostB # 然后向 file.txt 中写入信息: 4#192.168.0.1# hostA # 调用 FileTransfer.exe Mainborad 接收到 B 的回复后,向 file.txt 文件写入信息: 5#192.168.0.2 # hostB # FileTransfer.exe 启动,读取 file.txt 文件的内容,然后进入接收文件 状态 FileTransfer.exe 启动,读取 file.txt 文件的内容,然后进入传送文件 状态 图 1.5 主机 A 向主机 B 请求发送文件的过程 (4)语音聊天。中转文件为“voice.txt”。 图 1.6 描述了主机 A 向主机 B 请求语音聊天的过程。 主机 A 主机 B Mainboard 知道 B 的 IP 地址, 向 B 发送文件传输请求: 2#192.168.0.1# hostA # Mainboard 接收到 A 的请求, 如同意语音聊天,则回复: 3#192.168.0.2# hostB # 然后向 voice.txt 中写入信息: 2#192.168.0.1# hostA # 调用 Speak.exe Mainborad 接收到 B 的回复后, 向 voicetxt 中写入信息: 3#192.168.0.2 # hostB # Speak.exe 启动,读取 voice.txt 文件的内容,然后进入语音聊天 状态 Speak.exe 启动,读取 voice.txt 文件内容,然后进入语音聊天 状态 图 1.6 主机 A 向主机 B 请求语音聊天的过程 湖南工程学院毕业设计(论文) 同文件传输一样,进行语音聊天时也只是在请求和回复请求阶段使用主程序进行 通信,然后交由两端的语音聊天程序进行通信。 上面的例子描述了软件各个功能的工作原理与流程。主程序间需要通信,各个模 块之间也需要通信,这就需要使用不同的端口,并且根据功能的不同,所使用的网络 协议也有可能不同,为了方便理解,在这里规定各工程的通信协议及使用端口,如表 1.2 所示。 表 1.2 各工程的通信协议及使用端口 工程名实现功能使用协议接收信息端口发送信息端口 MainBord主界面Tcp/IP 协议80018001 Speak语音聊天UDP 协议51715172 Talk对话Tcp/IP 协议8001 FileTransfer传送文件Tcp/IP 协议800800 多功能聊天系统的设计与实现 第 2 章 文字聊天模块的分析与设计 在前面已介绍过文字聊天程序一般实现原理与过程,使用 CSocket 类进行编程, Send 函数发送数据,Receive 函数接收数据。此程序与其他程序不同的是,需要与主程 序进行交互。主要实现步骤在 OnInitDialog 和 OnOk 两个函数中完成。 2.1 主要实现原理 OnInitDialog 函数是对话框初始化函数,初始化变量,读取并解析“msg.txt”的内容。 如是发送信息给好友,则主程序得到好友 IP 地址和主机名,将其写入中转文件 “msg.txt”中,然后调用本程序,由 OnOk 函数连接好友,并发送聊天内容;如果是接 收好友消息,主程序接收到聊天内容后,将其写入中转文件中,然后调用本程序,本 程序在 OnInitDialog 函数中解析出聊天内容,直接显示在对话框上,同时设置标志变 量,表明此时程序处于回复状态,然后由 OnOk 函数进行处理。 OnOk 函数是“发送”按钮的事件响应函数,在此函数中需要处理两种情况,一种情 况是主动向好友发送信息,此时按钮的标题为“发送”,即单击此按钮将聊天内容输入框 中的内容发送到好友的主程序;另一种是接收好友消息进行回复情况,指程序从文件中 解析出聊天内容显示在界面上后,此时“发送”按钮上的标题变为“回复”,用户如果要回 复对方不必将聊天程序关闭,再到主界面中通过双击好友名称发送信息,而直接可通过 单击“回复”按钮进入第一种主动向好友发送信息的情况。 2.2 聊天模块具体的实现步骤 (1) 在 VC+6.0 中利用 MFC AppWizard 创建一个基于对话框的 MFC(exe)工程, 工程名为 Talk,其中在 AppWizard 的 Step2 中选中 Windows Sockets,添加 Socket 支持。 各控件属性如表 2.1 所示。 表 2.1 控件属性表 序号控件类型控件 ID变 量 Static TextIDC_NAMECString m_NAME IP AddressIDC_ServerIPADDRES S CIPAddressCtrl m_ServerIPADDRESS Edit BoxIDC_TALKCString m_Talk ButtonIDOKCButton m_SendMSG ButtonIDCANCEL 湖南工程学院毕业设计(论文) (2) 向工程中添加文件“Message.h”,并在其中编写 Talk 程序中所使用的消息的 结构。 struct Message int sign; /标志 char msg1000; msg; (3)向主对话框类 TalkDlg.h 中添加变量和函数,类定义如下: class CTalkDlg : public CDialog / Construction public: void GetIP_Name(); SOCKADDR_IN sockStruct; SOCKET ServerSocket; CString IPstr; CTalkDlg(CWnd* pParent = NULL); / standard constructor CString IPName; CString HostName; / Dialog Data /AFX_DATA(CTalkDlg) enum IDD = IDD_TALK_DIALOG ; CButtonm_SendMSG; CIPAddressCtrl m_ServerIPADDRESS; Cstring m_NAME; Cstring m_Talk; /AFX_DATA / ClassWizard generated virtual function overrides /AFX_VIRTUAL(CTalkDlg) public: virtual BOOL DestroyWindow(); protected: virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support /AFX_VIRTUAL / Implementation protected: HICON m_hIcon; 多功能聊天系统的设计与实现 / Generated message map functions /AFX_MSG(CTalkDlg) virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); virtual void OnOK(); /AFX_MSG DECLARE_MESSAGE_MAP() private: BOOL sign; ; (4) 主对话框类的实现文件 TalkDlg.cpp 中包含头文件“fstream.h”和“Message.h”, 在 OnInitDialog()函数中进行初始化,读取并解析“msg.txt”文件中的内容,获取对方 IP 和名称等信息。如果接收对方发送消息,则直接将消息显示在对话框中,然后可进行 回复。代码如下: BOOL CTalkDlg:OnInitDialog() / TODO: Add extra initialization here IPstr=127.0.0.1; sign=FALSE; CFile MyFile; MyFile.Open(msg.txt,CFile:modeRead); int filelong=0; filelong=MyFile.GetLength(); char pbuf1000; MyFile.Read( pbuf, sizeof( pbuf ) ); /if(filelongSetReadOnly(TRUE); m_SendMSG.SetWindowText(回复消息); sign=TRUE; /SetDlgItemText(IDC_SendBTN,回复消息); /IPstr=192.168.1.98; msg.sign=1; this-UpdateData(false); m_ServerIPADDRESS.SetWindowText(IPstr); GetIP_Name(); return TRUE; / return TRUE unless you set the focus to a control (5) 自定义函数 GetIP_Name(),用于获取本机 IP 和主机名,分别存储于 IPName 和 HostName。 void CTalkDlg:GetIP_Name() WORD wVersionRequested; WSADATA wsaData; char hostname128; 多功能聊天系统的设计与实现 CString strip; PHOSTENT hostinfo; wVersionRequested=MAKEWORD(2,0); if(WSAStartup(wVersionRequested, WSACleanup(); IPName=strip; HostName.Format(%s,hostname); (6) 添加主对话框类的消息响应函数。添加“发送”按钮的 BN_CLICKED 消息响 应函数 OnOk(),如果是接收消息,单击后清空消息显示框,设置为可编辑,修改标志 变量,这样就将程序设置为发送消息状态,实现了回复信息的功能,使用send 函数发送 聊天数据,数据格式是“(0/1)#(对方 IP)#(对方名称)#(聊天内容)#”;最后添加 DestroyWindow 消息响应函数DestroyWindow(),用于在消息发送成功后自动销毁程序。 两个消息响应函数代码如下: void CTalkDlg:OnOK() /连接对方,根据 sign 判断是进行回复还是发送信息 / TODO: Add extra validation here if(sign) CEdit* myedit; myedit=(CEdit*) GetDlgItem(IDC_TALK); myedit-SetReadOnly(FALSE); m_SendMSG.SetWindowText(发送); sign=FALSE; m_Talk.Empty(); UpdateData(FALSE); (CEdit *)GetDlgItem(IDC_TALK)-SetFocus(); 湖南工程学院毕业设计(论文) return; LPCTSTR ip; ip=IPstr; WSADATA wsaData; if(WSAStartup(MAKEWORD(2,1), return; DWORD dwip; if(dwip=inet_addr(ip)= =INADDR_NONE) MessageBox(IP 有误,错误信息,NULL); return; ServerSocket=socket(PF_INET,SOCK_STREAM,0);/创建服务器 Socket if(ServerSocket= =INVALID_SOCKET) MessageBox(无法创建服务器 Socket,错误信息,NULL); return; sockStruct.sin_family=AF_INET;/TCP/IP 协议 sockStruct.sin_port=htons(8001);/端口 sockStruct.sin_addr.S_un.S_addr=dwip; if(connect(ServerSocket,(LPSOCKADDR) return; / 产生相应传递给窗口的消息为 WM_SERVER_ACCEPT ,这是自定义消息 UpdateData(TRUE); if(m_Talk.IsEmpty() MessageBox(不允许发送空消息,错误信息,NULL); return; 多功能聊天系统的设计与实现 msg.sign=1; m_Talk=IPName+#+HostName+#+m_Talk+#; strcpy(msg.msg,(LPCTSTR)m_Talk); if(send(ServerSocket,(char *) return; m_Talk.Empty(); UpdateData(FALSE); CDialog:OnOK(); BOOL CTalkDlg:DestroyWindow() / TODO: Add your specialized code here and/or call the base class WSACleanup();/断开连接 return CDialog:DestroyWindow(); 代码编写完毕,编译运行,此聊天程序需要主程序的调用,不能单独点对点聊天。 湖南工程学院毕业设计(论文) 第 3 章 文件传输模块的分析与设计 在聊天过程中,有时候需要传输一些文件,现只要完成最基本的文件传输功能即 可。 3.1 程序的实现原理 在程序中将客户端和服务器端集成在一起,定义函数 OnServer 用于实现服务器端 功能,定义函数 OnClient 用于实现客户端功能,最后还需要一个标志变量,来表明此 时程序作为服务器端还是客户端,然后调用相应的函数。 选择传输文件 新建 CSocket 对象 sockSrvr sockSrvr.listen 等待客户连接 新建 CSocket 对象 sockRecv sockSrvr.Accept (sockRecv) 新建 CSocket 对象 sockClient sockRecv.Send() 传送文件 sockRecv.Close() 发送结束 结束 sockClient.Connect 请求连接 sockClient.Receive 接收文件 sockClient.Close() 接收结束 服务器端 客户端 结束 图 3.1 文件传输的实现原理 在程序中定义结构体类型,它包含文件名、属性、创建时间等文件信息,具体定 义如下: typedef struct _SOCKET_STREAM_FILE_INFO 多功能聊天系统的设计与实现 TCHAR szFileTitle128; /文件的标题名 DWORD dwFileAttributes; /文件的属性 FILETIME ftCreationTime; /文件的创建时间 FILETIME ftLastAccessTime; /文件的最后访问时间 FILETIME ftLastWriteTime; /文件的最后修改时间 DWORD nFileSizeHigh; /文件大小的高位双字 DWORD nFileSizeLow; /文件大小的低位双字 DWORD dwReserved0; /保留,为 0 DWORD dwReserved1; /保留,为 0 SOCKET_STREAM_FILE_INFO, * PSOCKET_STREAM_FILE_INFO; 3.2 文件传输原理 (1) 发送方将要发送文件的信息发送过去,接收方根据接收到的文件信息在本 地建立一个文件副本; (2) 发送方以 1024 字节为单位发送文件内容,接收方每接收到一个单位的内容 就将其写入上面创建的文件副本,重复此过程,直到文件内容发送结束,传输完毕。 3.3 具体实现过程 (1) 添加的控件。在 VC+6.0 中利用 MFC AppWizard 创建一个基于对话框的 MFC(exe)工程,工程名为 FileTransfer,其中在 AppWizard 的 Step2 中选中 Windows Sockets,添加 Socket 支持。各控件属性如表 3.1 所示。 表 3.1 控件属性表 序号控件类型控件 ID变 量 Static TextIDC_NAMECString m_Name IP AddressIDC_IPADDRESSCIPAddressCtrl m_IPADDRESS Static TextIDC_FILENAMECString m_FileName Static TextIDC_FILESIZECString m_FileSize ProgressIDC_PROGRESSCProgressCtrl m_Progress ButtonIDOKCButton m_Button ButtonIDCANCEL (2) 向工程中添加文件“FileInfo.h”,在其中编写文件传输的结构,代码如下: typedef struct _SOCKET_STREAM_FILE_INFO 湖南工程学院毕业设计(论文) TCHAR szFileTitle128; /文件的标题名 DWORD dwFileAttributes; /文件的属性 FILETIME ftCreationTime; /文件的创建时间 FILETIME ftLastAccessTime; /文件的最后访问时间 FILETIME ftLastWriteTime; /文件的最后修改时间 DWORD nFileSizeHigh; /文件大小的高位双字 DWORD nFileSizeLow; /文件大小的低位双字 DWORD dwReserved0; /保留,为 0 DWORD dwReserved1; /保留,为 0 SOCKET_STREAM_FILE_INFO, * PSOCKET_STREAM_FILE_INFO; (3) 向主对话框类 FileTransferDlg 添加成员变量和成员函数,类定义如下: class CFileTransferDlg : public CDialog / Construction public: CString IPstr; int sign; CFile MyFile; void OnClient(); void OnServer(); CFileTransferDlg(CWnd* pParent = NULL); / standard constructor / Dialog Data /AFX_DATA(CFileTransferDlg) enum IDD = IDD_FILETRANSFER_DIALOG ; Cbutton m_Button; CprogressCtrl m_Progress; CIPAddressCtrl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第2课《梅岭三章》说课稿 2023-2024学年统编版语文九年级下册
- 初一历史上册鲁教版第三单元第13课大一统的汉朝说课稿
- 活动一 一次性筷子使用情况调查教学设计-2025-2026学年小学综合实践活动四年级上册沪科黔科版
- 蓄电池的性能指标
- 蓄电池的使用与维护
- 2025年殡葬改革试题及答案解析
- 三年级下册心理健康教案-26《和拖延的坏朋友说再见》 北师大版
- 2025年2月消毒科专科模拟考试题(附答案)
- 蒸汽小火车水彩水墨画课件
- 2025年高考生物试题分类汇编生物的变异与进化(原卷版)
- 2025-2030电力电子行业发展分析及投资价值研究咨询报告
- 白细胞减少症和粒细胞缺乏
- CJ 41-1999工业企业水量平衡测试方法
- 地下矿山地压管理制度
- ktv卫生承包协议书
- 藏文考试试题及答案
- 2023年传播学教程郭庆光完整笔记
- 施工水电费合同协议书
- 车辆动力学分析考试试题及答案
- 2025-2030中国毫米波雷达行业发展分析及发展趋势与投资前景预测研究报告
- 2025年格力中央空调销售安装合同范本
评论
0/150
提交评论