資源簡介
計(jì)算機(jī)網(wǎng)絡(luò)課程大作業(yè)。
使用socket編程。
實(shí)現(xiàn)P2P和群聊。
個性化MFC框架界面。
數(shù)據(jù)庫存儲方面有小的bug。
本軟件用VS2010/2013開發(fā),如遇版本問題可嘗試修改“屬性->常規(guī)->平臺工具集”解決。
代碼片段和文件信息
//?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(“內(nèi)存不足!“));
return;
}
memset(pBuff?0??sizeof(char)*head.nContentLen);
if(head.nContentLen!=Receive(pBuff?head.nContentLen))
{
AfxMessageBox(_T(“收到數(shù)據(jù)有誤!“));
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)
{
//生成協(xié)議頭
HEADER?head;
head.type?=?MSG_SEND;
head.nContentLen?=?nlen;
if(Send(&head?sizeof(HEADER))==SOCKET_ERROR)
{
AfxMessageBox(_T(“發(fā)送錯誤!“));
return?FALSE;
};
if(Send(lpBuff?nlen)==SOCKET_ERROR)
{
AfxMessageBox(_T(“發(fā)送錯誤!“));
return?FALSE;
};
return??TRUE;
}
BOOL?CClientSocket::SendGETYourSign(LPSTR?lpBuff?int?nlen)
{
//生成協(xié)議頭
HEADER?head;
head.type?=?MSG_UPDATEYOURSIGN;
head.nContentLen?=?nlen;
if?(Send(&head?sizeof(HEADER))?==?SOCKET_ERROR)
{
AfxMessageBox(_T(“發(fā)送錯誤!“));
return?FALSE;
};
if?(Send(lpBuff?nlen)?==?SOCKET_ERROR)
{
AfxMessageBox(_T(“發(fā)送錯誤!“));
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??可執(zhí)行文件\NetChatServer.exe
?????文件????11849216??2015-01-14?23:26??可執(zhí)行文件\MINET.exe
?????目錄???????????0??2015-01-16?09:28??可執(zhí)行文件\
?????文件?????????339??2015-01-14?23:26??可執(zhí)行文件\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個文件信息
評論
共有 條評論