⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d077.bmp.txt

📁 Visual C++通信编程工程实例精解(附盘)
💻 TXT
字号:
    typedef CList <SOCKET, SOCKET&> SOCKET_ARRAY;
    CList在文件afxtempl.h中声明。
    2)添加非阻塞网络事件处理函数。为了响应非阻塞的网络事件,需要在对话框类中分
别为服务器和客户机增加一个消息处理函数。
    首先,分别在对话框类的头文件ChatRoomDlg.h中增加两个自定义消息:
#define SER_MESSAGE WM_USER +100
#define CLI_MESSAGE WM_USER + 101
    其中,SER_MESSAGE和CLI_MESSAGE分别作为上述两个类WSAAsyncSelect0函数
的参数,WM_USER为用户定义消息的起点,一般从+100开始。
    其次,在ChatRoomDlg.h文件为CChatRoomDlg类添加两个函数的声明:
afx_msg LRESULT OnServerMessage(WPARAM wParam,   LPARAMIParam);
afx_msg LRESULT OnClientMessage(WPARAM wParam,    LPARAM IParam);
    然后,在ChatRoomDlg.cpp文件中的BEGIN_MESSAGE_MAP(CChatRoomDlg.CDialog)
和END_MESSAGE_MAPO之间增加如下代码,将函数与消息关联起来:
ON_MESSAGE(SER_MESSAGE, OnServerMessage)
ON_MESSAGE(CLI_MESSAGE, OnClientMessage)
最后,在ChatRoomDlg.cpp中添加详细的消息处理函数代码,详细代码如下:
LRESULT CExamplelDlg::OnServerMessage(WPARAM wParam, LPARAM lParam)
{
        SOCKET socket,ts;
                 int length,i,j ;
      CString str="";
        CEdit * output=NULL;
        char s[1024J;
           int len;
switch(IParam)
          {
                case FD_ACCEPT:
                      socket= accept(m_server.m_hSocket,NULL,NULL);
length=m_connectionList.GetCount0;
for(i=O;i<length;i++)
                             {
                                                                                        ts=m_connectionList.GetAt(m_connectionList.Findlndex (i》 ;
  s[O]=NULL;
                                                                      strcat(s," -令游客进入了 ~p天室”);
 send(ts,s,strlen(s),0);
                             }
m_sShowText+="\n";
                                     m_sShowText+="-AI游客进入了聊天室 T ";
GetDlgItem(IDC_SHOWTEXT)->SetWindowText(m_sShowText);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -