ftp服务与客户端系统设计—免费毕业设计论文内容摘要:
格式化到来的显示信息数据 va_start(args, pstr)。 (pstr, args)。 //增添新元素,创建新到来的日志显示消息 CLogMsg *p_Log = new CLogMsg。 GetLocalTime(amp。 p_Log_SysTime_sheep)。 p_Log_Level_sheep = n。 p_Log_Text_sheep = temp。 ()。 (p_Log)。 ()。 //发送新到来的日志显示消息 PostMessage(WM_ADDTRACELINE)。 } 13 2. On_Trace_Ack(WPARAM, LPARAM)函数。 On_Trace_Ack 函数为日志消息响应函数,当服务器器接收到客户端的信息时,向显示 List 控件成功添加新元素后,向服务器日子模块发送日志显示消息;日子模块在响应函数 On_Trace_Ack 中,判断消息的类别,根据其类别设定其消息显示内容和内容显示颜色。 其函数实现代码为: LRESULT CFTP_Trace_Child::On_Trace_Ack(WPARAM, LPARAM) { CLogMsg *pLog_sheep。 pLog_sheep = (CLogMsg *)()。 //判断日志消息类别用不同颜色将其显示 if(pLog_sheep_Level_sheep==1) ((CColorListBox*)GetDlgItem(IDC_TRACE)) AddString(pLog_sheep_Text_sheep, RGB(0,255,255))。 else if(pLog_sheep_Level_sheep==2) ((CColorListBox*)GetDlgItem(IDC_TRACE)) AddString(pLog_sheep_Text_sheep, RGB(255,0,255))。 else if(pLog_sheep_Level_sheep==3) ((CColorListBox*)GetDlgItem(IDC_TRACE)) AddString(pLog_sheep_Text_sheep, RGB(255,0,0))。 else ((CColorListBox*)GetDlgItem(IDC_TRACE)) AddString(pLog_sheep_Text_sheep, RGB(0,0,255))。 delete pLog_sheep。 return TRUE。 } 3. OnSize(UINT nType, int cx, int cy)函数。 OnSize 为日子模块窗口大小改变事件响应函数,当应用程序窗口大小发生改变时,会触发窗口改变事件。 在事件响应函数 OnSize 中,日子模块改变窗口大小,使其和主窗口保持大小比例。 其函数实现代码为: void CFTP_Trace_Child::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy)。 if (IsWindow(::GetDlgItem(m_hWnd, IDC_TRACE))) { CRect my_rect。 GetClientRect(my_rect)。 //获得当前客户区窗口大小 //设置日子模块窗口大小和当前窗口一样大小 ((CColorListBox*)GetDlgItem(IDC_TRACE))MoveWindow(my_rect)。 } } 14 在线用户 模块 在线用户 模块的主要功能为显示当前连接上服务器的用户。 其显示内容有:用户登录用户名,用户 IP,用户登录时间。 显示方法为使用 ClistCtrl控件将显示内容显示在其上。 ClistCtrl 控件常用操作方法如下。 1) 设置 ClistCtrl 类 型。 DWORD SetExtendedStyle(DWORD dwNewStyle) ; 其中 LVS_EX_CHECKBOXES 表示添加 CheckBox, LVS_EX_FULLROWSELECT 表示选择整行 , LVS_EX_GRIDLINES 表示添加表格线。 如果设置了 LVS_EX_CHECKBOXES 属性,则可以用 BOOL GetCheck( int nItem ) const; 来得到某一行是否 Checked。 2) 删除操作。 BOOL DeleteItem( int nItem),删除指定的元素, nItem 为要删除的元素。 BOOL DeleteAllItems( ),删除所有的元素。 3) 插入元素操作。 int InsertItem( int nItem, LPCTSTR lpszItem), nItem 为插入元素索引号,lpszItem 为插入元素标签地址。 4)插入列操作。 int InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat = LVCFMT_LEFT, int Width = 1, int nSubItem = 1 ), nCol为新列索引号, lpszColumnHeading列元素存放名称地址。 5)设置列宽操作。 BOOL SetColumnWidth( int nCol, int cx ), nCol列所引号, cx设置宽度。 6)设置元素值操作。 BOOL SetItemText(int nItem,int nSubItem, LPCTSTR lpszText ), nItem 设置元素, nSubItem 设置子元素, lpszText 值内容地址。 其程序设计流程图如图 所示。 开始用户登录信息。 增加 Ctrl Li st 新元素登录信息正确。 查找用户 Ctrl Li st 元素删除用户 Ctrl Li st 元素用户下线信息结束NYNYYN 图 在线用户 模块设计流程图 15 Fig. Online user modular design flow chart 在线用户 模块运行界面图如图 所示。 图 在 线用户 模块运行界面图 Fig. Online user modular running interface 在线用户模块的实现主要通过设计 CFTP_OnlineUsers_Child 类来实现,其主要功能函数如下: 1. OnInitDialog() 函数。 OnInitDialog()为在线用户模块对话框初始函数,在线用户模块在这里为在线用户 List 显示控件,增添三个元素:“用户名”,“ IP 地址”,“登陆时间”,用来显示登陆用户的信息。 函数实现代码如下: BOOL CFTP_OnlineUsers_Child::OnInitDialog() { CDialog::OnInitDialog()。 ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) InsertColumn(0, ThreadID)。 //向 List控件添加 用户名 列元素 ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) InsertColumn(1, 用户名 )。 //向 List控件添加 IP 地址 列元素 ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) InsertColumn(2, IP 地址 )。 //向 List控件添加 登录时间 列元素 ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) InsertColumn(3, 登录时间 )。 DWORD dwStyle = ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) 16 GetExtendedStyle()。 dwStyle |= LVS_EX_FULLROWSELECT。 ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) SetExtendedStyle(dwStyle)。 return TRUE。 } 2. User_Add_sheep(DWORD nID, LPCTSTR lpName, LPCTSTR lpAddress) 函 数。 User_Add_sheep 函数为在线用户信息显示 List 控件,增加元素函数。 当有新的用户登录服务器时,在线用户模块调用 User_Add_sheep 函数,显示新的登录用户信息。 函数实现代码如下: void CFTP_OnlineUsers_Child::User_Add_sheep(DWORD nID, LPCTSTR lpName, LPCTSTR lpAddress) { CString my_strThreadID。 (%d, nID)。 LVFINDINFO info_sheep。 = LVFI_PARTIAL|LVFI_STRING。 = (LPCTSTR)my_strThreadID。 int nIndex。 if (nIndex= ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS))FindItem(amp。 info_sheep) , nIndex== 1) { nIndex = ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS))InsertItem(0, my_strThreadID)。 } else { AfxMessageBox(添加用户出错 )。 return。 } //显示用户登录用户名 ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) SetItemText(nIndex, 1, lpName)。 //显示用户登录 IP地址 ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) SetItemText(nIndex, 2, lpAddress)。 //显示用户登录时间 ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) SetItemText(nIndex, 3, CTime::GetCurrentTime().Format(%H:%M:%S))。 } 3. Delete_User_sheep(DWORD nID)函数。 Delete_User_sheep 函数为在线用户信息显示 List 17 控件,删除元素函数。 当有用户下线时或则断开服务器连接时,在线用户模块调用Delete_User_sheep 函数,删除相应的登录用户信息。 函数实现代码如下: void CFTP_OnlineUsers_Child::Delete_User_sheep(DWORD nID) { LVFINDINFO info_sheep。 CString my_strThreadID。 (%d, nID)。 = LVFI_PARTIAL|LVFI_STRING。 = (LPCTSTR)my_strThreadID。 int nIndex。 //查找下线用户所在元素 索引 if (nIndex = ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS))FindItem(amp。 info_sheep) , nIndex != 1) { ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS))DeleteItem(nIndex)。 //删除下线元素所在显示元素 } else AfxMessageBox(没有找到要删除用户 )。 } 程序设置 模块 程序设置 模块的主要功能为配置 服务器参数。 其配置参数有: FTP 连接端口,最大用户连接数,服务器开启方式,服务器系统信息, Log文件查看和清除。 其程序设计方法为:系统时刻监控 程序设置 模块,当 程序设置 模块触发应用消息时,系统重新读入配置信息;当 程序设置 模块触发查看 Log 信息时,打开 Log 文件;当 程序设置 模块触发清除 Log 信息时,清空Log文件。 其程序流程图如图 所示。 18 开始配置应用消息触发。 查看 Lo g 消息触发清空 Lo g 消息触发结束系统读入配置信息 ,重配系统打开 Lo g 文件清空 Lo g 文件YYYNNN 图 程序设置 模块设计流程图 Fig. Procedures settings modular design flow。ftp服务与客户端系统设计—免费毕业设计论文
相关推荐
改和删除。 所添加的试题可以通过试题来源来设计试题库,例如:可以设计某某老师的题库。 这样设计可以使老师在出卷的时候直接调用自己的题库来出试卷。 这样方便了教师的出卷,缩减了教师的工作量和时间。 试题管理设计方案 试题录入: 首先进入,选择年级,课程,章节,知识点,只有知识点不为空的时候点确定,才会跳出试题的具体设置信息,否则会提示 “ 请首先选择知识点 ”要选择 对应的试题类型
碱站 蒸球 蒸 ab 厌氧系统 挤浆 调浆 新鲜水 软化水 锅炉 抄造 锅炉除尘及厌氧系统 蒸汽 调浆 膜处理 蒸 ab 蒸发 蒸 ab 干燥 蒸 ab 磨浆 洗浆 调浆 浓缩 调浆 漂洗 调浆 抄造 好氧系统 厌氧系统 蒸球 295 254 287 582 482 33 836 67 1325 532 195 1520 1791 271 1454 1725 1725 1725 8088 817
FROM yfgzxxb WHERE GZQJ 39。 $GZQJ39。 AND GWYH 39。 $GWYH39。 $result MSSQLserver2020_query $str, $sql。 if !result echo can not query to yfgzxxb。 exit。 $affected_rows MSSQLserver2020_affected_rows $sql。
35m 预应力混凝土简支 T 型梁桥 8 边梁现 浇部分横隔梁 横隔梁(现浇部分)体积 故: K N / m5 6 3 0 9 )6( g 铺装 8cm 混凝土铺装: K N / 5cm 沥青铺装: 8 .0 5 K N /m2370 .0 5 故将桥面铺装均摊给四片主梁,则: K N / )7( )(g 栏杆 一侧人行栏: KN/ 一侧防撞栏:
地方,在下载软件中应用多线程技术可以理解为将一个下载任务分成若干份来完成, 其中的并发控制将使下载的效率大大提高。 由于下载资源是一个过程,当中用到的时间可能会很长。 那么在很长的这段时间中很有可能会出现很多的意外情况使下载中断或是停止,比如电源意外被切断、网络中断、或是操作系统故障导致系统重新启动。 这些原因都会导致下载的中断,但是当用户重新下载资源时发现原来下载的数据已经消失你还是要回头再来
层,每一子层赋予不同的功能。 OSI的另一个问题是有些功能在不同的层一再出现,如编址、流量控制、纠错等等。 有些功能放在那里很难达成一致意见,如安全性、加密及网络管理层很难达成一致而干脆未包括在内。 同时 OSI完全忽略了无连接业务的相应的协议,而这在 LAN和演播室局域网中得到了广泛的应用,只是后来才加以补充。 另一个严重问题是 OSI主要考虑通信,而计算机世界有相当多的不同点。 最后在