教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

计算机网络大作业(2)

来源:网络收集 时间:2026-08-26
导读: } void CTalkDlg::OnAccept() { //此函数用于服务器 //接受链接请求 m_sListenSocket.Accept(m_sConnectSocket); //激活消息输入和发送的相关控件 GetDlgItem(IDC_EDIT_MSG)->EnableWindow(TRUE); GetDlgItem(IDOK)

}

void CTalkDlg::OnAccept() { //此函数用于服务器 //接受链接请求 m_sListenSocket.Accept(m_sConnectSocket); //激活消息输入和发送的相关控件 GetDlgItem(IDC_EDIT_MSG)->EnableWindow(TRUE); GetDlgItem(IDOK)->EnableWindow(TRUE); GetDlgItem(IDC_STATIC_MSG)->EnableWindow(TRUE); }

void CTalkDlg::OnConnect() { //此处用于\客户机\ //激活消息输入和发送的相关控件 GetDlgItem(IDC_EDIT_MSG)->EnableWindow(TRUE); GetDlgItem(IDOK)->EnableWindow(TRUE); //botton send GetDlgItem(IDC_STATIC_MSG)->EnableWindow(TRUE); //激活\关闭\按钮,这仅对\客户机\有效 GetDlgItem(IDC_BIN_CLOSE)->EnableWindow(TRUE); }

6、发送和接收数据

void CTalkDlg::OnSendMsg() { // TODO: Add your control notification handler code here int nLen;//消息长度 int nSent;//已发送消息的长度 //从对话筐中取出数据 UpdateData(TRUE); //判断要发送的消息是否为空 if(!m_strMsg.IsEmpty()) { //获取消息的长度 nLen=m_strMsg.GetLength(); //发送消息 nSent=m_sConnectSocket.Send(LPCTSTR(m_strMsg),nLen); //判断发送是否成功 if(nSent!=SOCKET_ERROR) {

//发送成功,将消息添加到“发送的消息“列表框 m_listSent.AddString(m_strMsg); UpdateData(FALSE); } else { AfxMessageBox(\信息发送错误!\ } //清除当前消息 m_strMsg.Empty(); //更新对话框数据 UpdateData(FALSE); } }

void CTalkDlg::OnReceive() { char *pBuf=new char[1025]; int nBufSize=1024; int nReceived; CString strReceived; //接收消息 nReceived=m_sConnectSocket.Receive(pBuf,nBufSize); //判断接收是否成功 if(nReceived!=SOCKET_ERROR) { //保留接收消息的有效部分 pBuf[nReceived]=NULL; //将消息转化为CString对象 strReceived=pBuf; //将消息添加到“接收的消息”列表中 m_listReceived.AddString(strReceived); //更新对话筐数据 UpdateData(FALSE); } else { //发送消息失败,给出错误提示 AfxMessageBox(\信息接收错误!\ } }

7、终止连接

void CTalkDlg::OnClose() { //关闭连接的套接字 m_sConnectSocket.Close(); //禁用消息输入和发送的相关控件 GetDlgItem(IDC_EDIT_MSG)->EnableWindow(FALSE); GetDlgItem(IDOK)->EnableWindow(FALSE);//botton send GetDlgItem(IDC_STATIC_MSG)->EnableWindow(FALSE); GetDlgItem(IDC_BIN_CLOSE)->EnableWindow(FALSE); //清除列表框中的内容 while(m_listSent.GetCount()!=0) m_listSent.DeleteString(0); while(m_listReceived.GetCount()!=0) m_listReceived.DeleteString(0); //如果是“客户机” if(m_cmbType.GetCurSel()==1) { //对于客户机 //激活与连接相关的控件 GetDlgItem(IDC_BIN_CONNECT)->EnableWindow(TRUE); GetDlgItem(IDC_EDIT_SERVNAME)->EnableWindow(TRUE); GetDlgItem(IDC_EDIT_SERVPORT)->EnableWindow(TRUE); GetDlgItem(IDC_STATIC_SERVNAME)->EnableWindow(TRUE); GetDlgItem(IDC_STATIC_SERVPORT)->EnableWindow(TRUE); GetDlgItem(IDC_COMBO_BOX)->EnableWindow(TRUE); } }

void CTalkDlg::OnBinClose() { // TODO: Add your control notification handler code here //调用OnClose()成员函数 OnClose(); }

四、运行截图

1、启动服务器,使服务器处于侦听状态

2、启动客户机程序

此时已经连接成功

3、开始聊天

此时已经可以实现通信功能。

五、总结

通过以上学习让我学会了什么是基于C/S模式的开发,同是在调试代码的过

成中也让我深深的体会到了调试的艰苦,因为有时候一个小小的错误可以调试一个下午都找不到错误在什么地方,最后当你找到的时候你会发现那是一个小的不能再小的错误,但是这么一个错误却浪费了你一个下午的时间。所以从这个地方我可以学到在编代码的过程中一定要注意细节,一定要细心。

还有其实细节只是我学到的一小部分,最重要的是,在编写一个软件的时候的前期规划,这个非常重要,现在我深有体会,因为之前的一些软件基本上都是先从代码下手,但是这次我从规划开始,先整天想好架构,然后具体细化,最后都编代码,整个过程还不到我以前编写一个软件所用的时间的一半。

…… 此处隐藏:874字,全部文档内容请下载后查看。喜欢就下载吧 ……
计算机网络大作业(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/519026.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)