现在的位置: 首页 > 综合 > 正文

在用WINSOCK实现聊天室时的一些总结

2012年09月14日 ⁄ 综合 ⁄ 共 1499字 ⁄ 字号 评论关闭

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日
 *
 * 取代版本:无
 * 原作者  :无
 * 完成日期:无
 */

抱歉!评论已关闭.