论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

局域网飞鸽传书软件(论文+程序)

图4 启动主界面 内容来自论文无忧网 www.paper51.com

进行发送的,在发送时将会把信息发送给在局域网内部的所有用户包括自己。选择用户并输入发送信息,单播发送的按钮为BitBtn2,主要是通过Id UDP Server和Id UDP Client组件来编写的,由client. Send Buffer语句来发送的,主要是对局域网内部的同一工作组用户发送信息。 内容来自论文无忧网 www.paper51.com

广播发送的按钮为BitBtn3,主要是通过IdUDP Server和Id UDP Client组件来编写的,主要是使用了client. Broadcast来对信息,如图5所示:

内容来自论文无忧网 www.paper51.com

paper51.com

图5 用户选择图 内容来自论文无忧网 www.paper51.com

其中主要的代码为: copyright paper51.com

void TMsgApp::InitWindow(void)

copyright paper51.com

{ http://www.paper51.com

      WNDCLASS      wc;

paper51.com

      HWND         hWnd;

内容来自www.paper51.com

      char        class_name[MAX_PATH]= IPMSG_CLASS, *tok, *msg, *p;

copyright paper51.com

      ULONG              nicAddr= 0;

内容来自论文无忧网 www.paper51.com

      int                  port_no= atoi(cmdLine);   

copyright paper51.com

      if(port_no == 0)

paper51.com

             port_no= IPMSG_DEFAULT_PORT;

http://www.paper51.com

      if((tok = strchr(cmdLine, '/')) && separate_token(tok, ' ', &p)) paper51.com

      { copyright paper51.com

             BOOL   diag = TRUE;

内容来自www.paper51.com

             DWORD      status =0xffffffff; 内容来自论文无忧网 www.paper51.com

             if(stricmp(tok, "/NIC") == 0)    //NIC           { paper51.com

                    if(tok = separate_token(NULL, ' ', &p))

copyright paper51.com

                           nicAddr= ResolveAddr(tok);

copyright paper51.com

             }

paper51.com

             elseif (stricmp(tok, "/MSG") == 0)   内容来自论文无忧网 www.paper51.com

             {

http://www.paper51.com

                    MsgMng       msgMng(nicAddr,port_no); copyright paper51.com

                    ULONG       command =IPMSG_SENDMSG|IPMSG_NOADDLISTOPT|IPMSG_NOLOGOPT, destAddr;

paper51.com

                    while((tok = separate_token(NULL, ' ', &p)) != NULL && *tok == '/') {

内容来自论文无忧网 www.paper51.com

                           if(stricmp(tok, "/LOG") == 0)

内容来自论文无忧网 www.paper51.com

                                  command&= ~IPMSG_NOLOGOPT; http://www.paper51.com

                           elseif (stricmp(tok, "/SEAL") == 0) paper51.com

                                  command= IPMSG_SECRETOPT;

paper51.com

                    }

http://www.paper51.com

                    if((msg = separate_token(NULL, 0, &p)) != NULL) 内容来自论文无忧网 www.paper51.com

                    { copyright paper51.com

                           diag= FALSE;

copyright paper51.com

                            if ((destAddr = ResolveAddr(tok)) !=NULL)

内容来自论文无忧网 www.paper51.com

                                  status= msgMng.Send(destAddr, htons(port_no), command, msg) ? 0 : -1;

paper51.com

                    }

内容来自www.paper51.com

             }

http://www.paper51.com

             if(nicAddr == 0) copyright paper51.com

             { 内容来自www.paper51.com

                    if(diag) paper51.com

                           MessageBox(0,"ipmsg.exe [portno] [/MSG [/LOG] [/SEAL] <hostname or IP addr><message>]\r\nipmsg.exe [portno] [/NIC nic_addr]", MSG_STR, MB_OK); paper51.com

                    ::ExitProcess(status);

paper51.com

                    return; copyright paper51.com

             }

paper51.com

      } 内容来自www.paper51.com

  copyright paper51.com 

4.3.2文字聊天信息的封装 http://www.paper51.com

封装是一种把多次聊天的的数据捆绑在一起,使这两者不受外界干扰和误用的机制.封装可被理解为一种用做保护的包装器,以防止代码和数据被包装器外部所定义的其他代码任意访问.对包装器内部代码与数据的访问通过一个明确定义的接口来控制.封装代码的好处是每个人都知道怎样访问代码,进而无需考虑实现细节就能直接使用它,同时不用担心不可预料的副作用.

内容来自www.paper51.com

用户密封只需选择seal选项,程序插件自动生成封装功能。并且在聊天过程中,封装的过程仍在持续,聊天的内容是边封装数据包边传输。

内容来自www.paper51.com

密封发送信息接收界面,如图6所示

http://www.paper51.com

paper51.com

图6接收界面 copyright paper51.com

在点击open后显示信息。 http://www.paper51.com

其中实现的主要代码为:

内容来自www.paper51.com

BOOL TApp::PreProcMsg(MSG *msg) // for TranslateAccel & IsDialogMessage paper51.com

{

copyright paper51.com

      for(HWND hWnd=msg->hwnd; hWnd != NULL; hWnd=::GetParent(hWnd)) 内容来自论文无忧网 www.paper51.com

      { http://www.paper51.com

             TWin      *win =SearchWnd(hWnd);

http://www.paper51.com

             if(win != NULL) copyright paper51.com

                    return     win->PreProcMsg(msg);

http://www.paper51.com

      }

copyright paper51.com

      return     FALSE; 内容来自论文无忧网 www.paper51.com

} copyright paper51.com

LRESULT CALLBACK TApp::WinProc(HWND hWnd, UINT uMsg,WPARAM wParam, LPARAM lParam)

paper51.com

{

内容来自论文无忧网 www.paper51.com

      TWin*win = SearchWnd(hWnd); http://www.paper51.com

      if(win) 内容来自www.paper51.com

             return     win->WinProc(uMsg,wParam, lParam); http://www.paper51.com

      if((win = preWnd) != NULL) paper51.com

      {

http://www.paper51.com

             preWnd= NULL; 内容来自www.paper51.com

             AddWinByWnd(win,hWnd);

内容来自论文无忧网 www.paper51.com

             return     win->WinProc(uMsg,wParam, lParam); http://www.paper51.com

      }

copyright paper51.com

      return     DefWindowProc(hWnd,uMsg, wParam, lParam);

paper51.com

}

内容来自www.paper51.com

4.3.3 聊天信息的加锁 copyright paper51.com

加锁名如其实,其作用主要在于使传送的信息或者文件、文件夹只能给有password的用户看,从而加强了信息的安全程度。在现在这个网络黑客泛滥的时代,为了保护信息的隐私,加锁就更加必要了。以下为加锁信息的主要界面。 内容来自论文无忧网 www.paper51.com

在加锁后的信息接收界面,如图7所示:

内容来自论文无忧网 www.paper51.com

http://www.paper51.com

图7聊天信息加锁后界面 内容来自论文无忧网 www.paper51.com

点击确定后显示,如图8所示: http://www.paper51.com

内容来自论文无忧网 www.paper51.com

图8开锁界面 内容来自www.paper51.com

其中主要代码为:

内容来自论文无忧网 www.paper51.com

       BOOLTRegistry::DeleteChildTree(LPSTR subKey) http://www.paper51.com

{ http://www.paper51.com

      char buf[100];

内容来自论文无忧网 www.paper51.com

      BOOL   ret = TRUE; paper51.com

      if (subKey !=NULL && OpenKey(subKey) != TRUE) http://www.paper51.com

             return     FALSE; http://www.paper51.com

      while (EnumKey(0,buf, sizeof(buf)))

内容来自论文无忧网 www.paper51.com

      {

paper51.com

             if((ret = DeleteChildTree(buf)) != TRUE) copyright paper51.com

                    break; 内容来自www.paper51.com

      } paper51.com

      if (subKey !=NULL)

copyright paper51.com

      { copyright paper51.com

             CloseKey(); 内容来自论文无忧网 www.paper51.com

             ret= DeleteKey(subKey) ? ret : FALSE; http://www.paper51.com

      } paper51.com

      else {

内容来自www.paper51.com

             while(EnumValue(0, buf, sizeof(buf)))

copyright paper51.com

             {

http://www.paper51.com

                    if(DeleteValue(buf) != TRUE)

copyright paper51.com

                    { 内容来自www.paper51.com

                           ret= FALSE;

内容来自论文无忧网 www.paper51.com

                           break; 内容来自www.paper51.com

                    }

copyright paper51.com

             }

paper51.com

      } 内容来自论文无忧网 www.paper51.com

      return     ret; 内容来自www.paper51.com

} http://www.paper51.com

4.3.4文件传输的界面

内容来自www.paper51.com

与文字聊天一样,系统的文件、文件夹传输模块也尽量地要求简单易行,便于操作。当然,作为文件的传输,速度和安全也就成为了重要的问题,系统的简单加锁能达到局域网较为单一的环境要求。

paper51.com

文件传输的过程中流程为首先客端的主机通过TCP/IP协议建立链接,然后客户机发送套节字请求,通过3次握手连接响应,再转换数据为socket流传送,最近通过3次握手断开连接响应。 内容来自论文无忧网 www.paper51.com

选择用户并拖入相应所要传送的文件及文件夹,如图9所示: paper51.com

http://www.paper51.com

图9 文件传输界面 http://www.paper51.com

点击所发送的文件为文件另存为,界面如图10所示:

http://www.paper51.com

http://www.paper51.com

图10 选择存储路径

paper51.com

选择路径确定后,文件开始传输。其传送界面,如图11所示: paper51.com

copyright paper51.com

图11文件传输中

http://www.paper51.com

实现的主要代码为:

内容来自www.paper51.com

      voidTSendDlg::InitializeHeader(void) copyright paper51.com

{

http://www.paper51.com

      int           order[MAX_SENDWIDTH];

http://www.paper51.com

      int           revItems[MAX_SENDWIDTH];

内容来自论文无忧网 www.paper51.com

      while(maxItems > 0)

内容来自论文无忧网 www.paper51.com

             SendDlgItemMessage(HOST_LIST,LVM_DELETECOLUMN, --maxItems, 0);

copyright paper51.com

      ColumnItems= cfg->ColumnItems & ~(1 << SW_ABSENCE);

copyright paper51.com

      memcpy(FullOrder,cfg->SendOrder, sizeof(FullOrder));

内容来自www.paper51.com

      for(int cnt=0; cnt < MAX_SENDWIDTH; cnt++) { http://www.paper51.com

             if(GetItem(ColumnItems, cnt)) { paper51.com

                    items[maxItems]= cnt; copyright paper51.com

                    revItems[cnt]= maxItems++; 内容来自www.paper51.com

             } paper51.com

      } paper51.com

      int           orderCnt= 0;

内容来自www.paper51.com

      for(cnt=0; cnt < MAX_SENDWIDTH; cnt++) {

copyright paper51.com

             if(GetItem(ColumnItems, FullOrder[cnt])) http://www.paper51.com

                    order[orderCnt++]= revItems[FullOrder[cnt]]; 内容来自论文无忧网 www.paper51.com

      }

paper51.com

      DWORDdw = ::GetWindowLong(GetDlgItem(HOST_LIST), GWL_STYLE) | LVS_SHOWSELALWAYS;

paper51.com

      ::SetWindowLong(GetDlgItem(HOST_LIST),GWL_STYLE, dw); 内容来自论文无忧网 www.paper51.com

      DWORDstyle = SendDlgItemMessage(HOST_LIST, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0) |LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP;

paper51.com

      if(cfg->GlidLineCheck)

http://www.paper51.com

             style|= LVS_EX_GRIDLINES;

paper51.com

      else 内容来自www.paper51.com

             style&= ~LVS_EX_GRIDLINES; copyright paper51.com

      SendDlgItemMessage(HOST_LIST,LVM_SETEXTENDEDLISTVIEWSTYLE, 0, style);

内容来自论文无忧网 www.paper51.com

      staticchar      *headerStr[MAX_SENDWIDTH]; 内容来自www.paper51.com

------分隔线----------------------------
联系方式