1、多线程方面,不一定要用STATIC,可以用
UINT MyThread(LPVOID P);//处理的主要函数。要放在类定义时的后边
AfxBeginThread(MyThread,0);
AfxEndThread(0);
2、//得到主窗口句柄
CMyServerDlg *dlg=(CMyServerDlg*)AfxGetApp()->GetMainWnd();
//等待连接
dlg->AllClientList[dlg->nConnectedClient]=accept(
(dlg->SvrSocket),
(SOCKADDR*)&(dlg->Cli),
&nAddrLen
);
但在线程处理函数中要用到主窗口里得如上用。
3、在存储客户端列表时的方面可以有
A:用数组形式 SOCKET AllClientList[MAX_CLIENT_COUNT];
B:用MFC里的 CPtrList m_connectionList;//已连接用户的存储链表
以上两种均可以完成
4、代码风格
if(SOCKET_ERROR==dlg->AllClientList[dlg->nConnectedClient])
{
continue;
}
//*****************************************************************************
//软件:聊天室服务器
//作者:安美洪
//功能:实现多用户聊天
//版本:V1.0
//版权:综联科技 @2006
//*****************************************************************************
/*********************对服务器初始化工作***********************************/
WSADATA wsaData;
WSAStartup(MAKEWORD(2,0),&wsaData);
// 客户端列表的初始化
for(int i=0; i<MAX_CLIENT_COUNT; ++i)
AllClientList[i] = NULL;
nConnectedClient = 0;
GetDlgItem(IDSTOP)->EnableWindow(FALSE);
/*
* Copyright (c) 2006,广东综联数码科技有限公司(成都)
* All rights reserved.
* 文件名称:GoQoMessage.h
* 文件标识:见配置管理计划书
* 文件摘要:够酷即时通讯系统消息结构
*/
#define MAX_MSG_LEN 256
#define BYTE int
#define DWORD unsigned short
#define DWORD32 unsigned int
/*
* 当前版本:1.0
* 软件作者:安美洪
* 完成日期:2006年1月7日
*
* 取代版本:无
* 原作者 :无
* 完成日期:无
*/