91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 43KB
    文件類型: .rar
    金幣: 2
    下載: 1 次
    發布日期: 2021-06-18
  • 語言: C/C++
  • 標簽: 多人聊天??聊天室??

資源簡介

1、 提供多人連接到服務器同時聊天 2、 用戶名可重復 3、 用戶之間可以私聊 4、 用戶進入和離開聊天室時,其他用戶得到通知

資源截圖

代碼片段和文件信息

//?ChatServer1.cpp:?implementation?of?the?CChatServer?class.
//?Download?by?http://www.NewXing.com
//////////////////////////////////////////////////////////////////////

#include?“stdafx.h“
#include?“ChatServer.h“

#ifdef?_DEBUG
#undef?THIS_FILE
static?char?THIS_FILE[]=__FILE__;
#define?new?DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
//?Construction/Destruction
//////////////////////////////////////////////////////////////////////

CChatServer::CChatServer()
{
m_cmd.SetType(this);

m_cmd.SetLoginFunc(LoginFunc);
m_cmd.SetUserMessageFunc(UserMessageFunc);

InitializeCriticalSection(&m_cs);
}

CChatServer::~CChatServer()
{
DeleteCriticalSection(&m_cs);
}

BOOL?CChatServer::ClientExit(LPCLIENTCONTEXT?lpContext)
{
CoInitialize(NULL);?

LPUSERINFO?lpUser;
if(!m_mapUsers.Lookup((LONG)lpContext?lpUser))
{
//找不到該用戶說明已經用戶已經退出了
CoUninitialize();?
return?TRUE;
}


EnterCriticalSection(&m_cs);
m_mapUsers.RemoveKey((LONG)lpContext);
LeaveCriticalSection(&m_cs);

//發送退出的用戶名稱給其他用戶
CString?strCmd?=?m_cmd.CreateUserLogout(*lpUser);
printf(“%s?LEAVE\n“?lpUser->m_name);
delete?lpUser;


POSITION?pos?=?m_mapUsers.GetStartPosition();
for(;pos!=NULL;)
{
LPUSERINFO?lpUser;
LONG??pContext;
m_mapUsers.GetNextAssoc(pos??pContext?lpUser);
Send((LPCLIENTCONTEXT)pContext?strCmd);
}

CoUninitialize();?
return?FALSE;

}

void?CChatServer::ProcessReceiveData(LPCLIENTCONTEXT?lpContext?CBuffer?&buffer)
{
CoInitialize(NULL);?

try
{
//循環取得有效指令
CString?strxml;
while(m_cmd.HasNetPacket(buffer?strxml))
{
if(!m_cmd.DoProcessNetPacket((LONG)lpContext?strxml))
{
printf(“Error?xml?format:?%s\n“?(LPCSTR)strxml);
}
}
}
catch(_com_error?&e)
{
printf(“%s“?(char?*)e.Description());
}

CoUninitialize();?

}

void?CChatServer::LoginFunc(USERINFO?&user)
{
//用戶登陸
//將用戶信息發送給用戶以及將服務器上用戶列表發送給用戶
sprintf(user.m_ip?((LPCLIENTCONTEXT)(user.m_id))->m_ip);
user.m_nPort?=?((LPCLIENTCONTEXT)(user.m_id))->m_nPort;
CString?strCmd?=?m_cmd.CreateLoginSuccess(user?&m_mapUsers);

Send((LPCLIENTCONTEXT)user.m_id?strCmd);

//將新用戶發送所有他用戶
strCmd?=?m_cmd.CreateNewUser(user);

POSITION?pos?=?m_mapUsers.GetStartPosition();
for(;pos!=NULL;)
{
LPUSERINFO?lpUser;
LONG??lpContext;
m_mapUsers.GetNextAssoc(pos??lpContext?lpUser);

if(?user.m_id?!=?(DWORD)lpContext)
{
Send((LPCLIENTCONTEXT)lpContext?strCmd);
}
}

//添加到列表
EnterCriticalSection(&m_cs);
m_mapUsers[user.m_id]?=?&user;
LeaveCriticalSection(&m_cs);
}

//發送某用戶的發言其他用戶:區別私聊
void?CChatServer::UserMessageFunc(USERINFO?&userSrcUSERINFO?&userDestCString?strSpeak)
{
if(userDest.m_id?==?0)
{
CString?strCmd?=?m_cmd.CreateUserMessage(userSrc?userDest?strSpeak);

//發送給所有用戶
POSITION?pos?=?m_mapUsers.GetStartPosition();
for(;pos!=NULL;)
{
LPUSERINFO?lpU

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

????.......??????1633??2004-02-14?16:13??www.NewXing.com\ChatServer\ReadMe.txt

????.......??????3597??2004-02-16?14:38??www.NewXing.com\Chatter\ReadMe.txt

????.......?????34816??2009-07-23?13:58??www.NewXing.com\程序文檔.doc

?????文件???????1234??2013-12-02?04:34??www.NewXing.com\Include\Buffer.h

?????文件???????1058??2013-12-02?04:34??www.NewXing.com\ChatServer\ChatServer.h

?????文件???????1594??2013-12-02?04:34??www.NewXing.com\Chatter\Chatter.h

?????文件???????2491??2013-12-02?04:34??www.NewXing.com\Chatter\ChatterDlg.h

?????文件???????2476??2013-12-02?04:34??www.NewXing.com\Chatter\ChatterMgr.h

?????文件???????5200??2013-12-02?04:34??www.NewXing.com\Include\ClientCommand.h

?????文件???????1358??2013-12-02?04:34??www.NewXing.com\Chatter\ClientSocket.h

?????文件???????1359??2013-12-02?04:34??www.NewXing.com\Chatter\ConnectDlg.h

?????文件????????625??2013-12-02?04:34??www.NewXing.com\Chatter\FileTransfer.h

?????文件???????3546??2013-12-02?04:34??www.NewXing.com\ChatServer\IOCPServer.h

?????文件???????1254??2013-12-02?04:34??www.NewXing.com\Chatter\ListCtrlEx.h

?????文件???????1245??2013-12-02?04:34??www.NewXing.com\Chatter\LoginDlg.h

?????文件????????489??2013-12-02?04:34??www.NewXing.com\ChatServer\Resource.h

?????文件???????1549??2013-12-02?04:34??www.NewXing.com\Chatter\Resource.h

?????文件???????4979??2013-12-02?04:34??www.NewXing.com\Include\ServerCommand.h

?????文件???????1140??2013-12-02?04:34??www.NewXing.com\Chatter\StdAfx.h

?????文件???????1144??2013-12-02?04:34??www.NewXing.com\ChatServer\StdAfx.h

?????文件???????1338??2013-12-02?04:34??www.NewXing.com\Chatter\TransferProgress.h

?????文件????????801??2013-12-02?04:34??www.NewXing.com\Include\User.h

?????文件????????723??2013-12-02?04:34??www.NewXing.com\Chatter\Waiting.h

?????文件???????4775??2013-12-02?04:34??www.NewXing.com\Include\xmlCommand.h

?????文件???????5235??2013-12-02?04:34??www.NewXing.com\Include\Buffer.cpp

?????文件???????3589??2013-12-02?04:34??www.NewXing.com\ChatServer\ChatServer.cpp

?????文件???????3792??2013-12-02?04:34??www.NewXing.com\Chatter\Chatter.cpp

?????文件???????9493??2013-12-02?04:34??www.NewXing.com\Chatter\ChatterDlg.cpp

?????文件???????7225??2013-12-02?04:34??www.NewXing.com\Chatter\ChatterMgr.cpp

?????文件???????1556??2013-12-02?04:34??www.NewXing.com\Chatter\ClientSocket.cpp

............此處省略29個文件信息

評論

共有 條評論