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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值