资源简介
计算机网络课程大作业。
使用socket编程。
实现P2P和群聊。
个性化MFC框架界面。
数据库存储方面有小的bug。
本软件用VS2010/2013开发,如遇版本问题可尝试修改“属性->常规->平台工具集”解决。
代码片段和文件信息
// ClientSocket.cpp : implementation file
//
#include “stdafx.h“
#include “MINET.h“
#include “ClientSocket.h“
#include “Header.h“
#include “Dlg_LIST.h“
#include “GROUPCHAT.h“
// CClientSocket
CClientSocket::CClientSocket()
:m_strUserName(_T(““))
{
}
CClientSocket::~CClientSocket()
{
}
void CClientSocket::OnReceive(int nErrorCode)
{
//首先接受head头
HEADER head ;
char* pHead = NULL;
pHead = new char[sizeof(head)];
memset(pHead 0 sizeof(head));
Receive(pHead sizeof(head));
head.type =((LPHEADER)pHead)->type;
head.nContentLen = ((LPHEADER)pHead)->nContentLen;
delete pHead;
pHead = NULL;
char* pBuff = NULL;
pBuff = new char[head.nContentLen];
if(!pBuff)
{
AfxMessageBox(_T(“内存不足!“));
return;
}
memset(pBuff 0 sizeof(char)*head.nContentLen);
if(head.nContentLen!=Receive(pBuff head.nContentLen))
{
AfxMessageBox(_T(“收到数据有误!“));
delete pBuff;
return;
}
CString strText(pBuff);
switch(head.type)
{
case MSG_UPDATE:
{
CString strText(pBuff);
theApp.DeleteNode(strText);
((Dlg_LIST*)(AfxGetApp()->GetMainWnd()))->UpdateUserInfo(strText);
}
break;
case MSG_SEND:
{
//显示接收到的消息
CString str(pBuff);
CompareList(str);
break;
}
case MSG_UPDATEOFFLINE:
{
//显示接收到的消息
CString strText(pBuff);
((Dlg_LIST*)(AfxGetApp()->GetMainWnd()))->UpdateUserOffLineInfo(strText);
}
case MSG_SQL:
{
//显示接收到的消息
CString str(pBuff);
((Dlg_LIST*)(AfxGetApp()->GetMainWnd()))->UpdateNameSign(str);
break;
}
case MSG_UPDATEYOURSIGN:
{
//显示接收到的消息
CString str(pBuff);
ShowYourSign(str);
break;
}
default: break;
}
delete pBuff;
CSocket::OnReceive(nErrorCode);
}
BOOL CClientSocket::SendMSG(LPSTR lpBuff int nlen)
{
//生成协议头
HEADER head;
head.type = MSG_SEND;
head.nContentLen = nlen;
if(Send(&head sizeof(HEADER))==SOCKET_ERROR)
{
AfxMessageBox(_T(“发送错误!“));
return FALSE;
};
if(Send(lpBuff nlen)==SOCKET_ERROR)
{
AfxMessageBox(_T(“发送错误!“));
return FALSE;
};
return TRUE;
}
BOOL CClientSocket::SendGETYourSign(LPSTR lpBuff int nlen)
{
//生成协议头
HEADER head;
head.type = MSG_UPDATEYOURSIGN;
head.nContentLen = nlen;
if (Send(&head sizeof(HEADER)) == SOCKET_ERROR)
{
AfxMessageBox(_T(“发送错误!“));
return FALSE;
};
if (Send(lpBuff nlen) == SOCKET_ERROR)
{
AfxMessageBox(_T(“发送错误!“));
return FALSE;
};
return TRUE;
}
BOOL CClientSocket::LogoIn(LPSTR lpBuff int nlen)
{
HEADER _head;
_head.type = MSG_LOGOIN;
_head.nContentLen = nlen;
int _nSnd= 0;
if((_nSnd = Send((char*)&_head sizeof(_head)))==SOCKET_ERROR)
return false;
if((_nSnd = Send(lpBuff nlen))==SOCKET_ERROR)
return false;
return TRUE;
}
CString CClientSocket::FindMSGName(CString str)
{
CString strTmp strInfo_1;
int number;
int n = str.Find(‘#‘);
strTmp = str.Left(n);
strIn
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1349120 2015-01-14 23:26 可执行文件\NetChatServer.exe
文件 11849216 2015-01-14 23:26 可执行文件\MINET.exe
目录 0 2015-01-16 09:28 可执行文件\
文件 339 2015-01-14 23:26 可执行文件\userSQL.txt
目录 0 2015-03-08 23:04 MINET-客户端\
目录 0 2015-03-08 23:04 MINET-客户端\MINET\
文件 8016 2015-01-14 23:24 MINET-客户端\MINET\ClientSocket.cpp
文件 601 2015-01-14 23:24 MINET-客户端\MINET\ClientSocket.h
文件 4016 2015-01-14 23:24 MINET-客户端\MINET\Dlg_CHAT.cpp
文件 888 2015-01-14 23:24 MINET-客户端\MINET\Dlg_CHAT.h
文件 7284 2015-01-14 23:24 MINET-客户端\MINET\Dlg_LIST.cpp
文件 1091 2015-01-14 23:24 MINET-客户端\MINET\Dlg_LIST.h
文件 4174 2015-01-14 23:24 MINET-客户端\MINET\GROUPCHAT.cpp
文件 868 2015-01-14 23:24 MINET-客户端\MINET\GROUPCHAT.h
文件 763 2015-01-14 23:24 MINET-客户端\MINET\Header.h
文件 3409424 2015-02-02 19:54 MINET-客户端\MINET\MINET.APS
文件 4463 2015-01-14 23:24 MINET-客户端\MINET\MINET.cpp
文件 1022 2015-01-14 23:24 MINET-客户端\MINET\MINET.h
文件 18042 2015-01-14 23:24 MINET-客户端\MINET\MINET.rc
文件 7107 2015-02-16 22:49 MINET-客户端\MINET\MINET.vcxproj
文件 4309 2015-01-14 23:24 MINET-客户端\MINET\MINET.vcxproj.filters
文件 143 2015-01-14 23:24 MINET-客户端\MINET\MINET.vcxproj.user
文件 3737 2015-01-14 23:24 MINET-客户端\MINET\MINETDlg.cpp
文件 860 2015-01-14 23:24 MINET-客户端\MINET\MINETDlg.h
文件 17656 2015-01-14 23:24 MINET-客户端\MINET\RCa04028
文件 17980 2015-02-02 19:54 MINET-客户端\MINET\RCa05872
文件 14944 2015-01-14 23:24 MINET-客户端\MINET\RCa06968
文件 14944 2015-01-14 23:24 MINET-客户端\MINET\RCb06968
文件 14944 2015-01-14 23:24 MINET-客户端\MINET\RCc06968
文件 2502 2015-01-14 23:24 MINET-客户端\MINET\ReadMe.txt
文件 2529 2015-01-14 23:24 MINET-客户端\MINET\SETTING.cpp
............此处省略67个文件信息
相关资源
- C++ 五子棋代码的实现包括交换,禁手
- [数据结构(C++版)第2版].王红梅
- C++ cookbook 中文版
- C++面向对象程序设计 谭浩强——电子
- C++实践之路
- 程序设计教程:用C++语言编程 陈家骏
- 分形算法与程序设计Visual C++实现
- C与C++高级图形程序设计完整版
- C++ Cookbook中文版
- C++模板元编程 pdf 带完整目录
-
C++与Simuli
nk混合编程Engine方式 - Visual C++项目开发实用案例.rar
- C++语言解析AutoCAD格式数据
- 对话框 mfc 绘制坐标轴
- 数据结构与算法分析C++描述-带书签目
- 数据结构用面向对象的方法与C++语言
- 基于VS2010的c++计算器小程序
- 基于VS2010的c++程序迷宫游戏
- C++ GUI Programming with Qt 4 Second Edition()
- C/S架构文件传输,socket实现C++完整代
- 数据结构算法与应用:C++语言描述的
- 状态指示灯(VC++6.0源代码)
- 车牌牌照检测识别 VC++和opencv1.0 完整
- VC++100.rar
- MFC的UDP广播实验程序
- MFC商品销售管理系统
- Hands-On GUI Programming with C++ and Qt5 电子
- sift算法C++opencv实现代码
- MFC谷歌离线地图
- VC++窗口和控件自适应屏幕尺寸
评论
共有 条评论