ServerSocket.cpp
上传用户:power_led
上传日期:2013-04-11
资源大小:373k
文件大小:3k
源码类别:

ICQ/即时通讯

开发平台:

Visual C++

  1. // ServerSocket.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "CChatServer.h"
  5. #include "ServerSocket.h"
  6. #include "ClientSocket.h"
  7. #include "MainFrm.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CServerSocket
  15. CServerSocket::CServerSocket()
  16. {
  17. }
  18. CServerSocket::~CServerSocket()
  19. {
  20. }
  21. // Do not edit the following lines, which are needed by ClassWizard.
  22. #if 0
  23. BEGIN_MESSAGE_MAP(CServerSocket, CSocket)
  24. //{{AFX_MSG_MAP(CServerSocket)
  25. //}}AFX_MSG_MAP
  26. END_MESSAGE_MAP()
  27. #endif // 0
  28. /////////////////////////////////////////////////////////////////////////////
  29. // CServerSocket member functions
  30. extern CCChatServerApp theApp;
  31. void CServerSocket::OnAccept(int nErrorCode) 
  32. {
  33. // TODO Add your specialized code here and/or call the base class
  34. g_cs.Lock();
  35. CClientSocket * m_pNewClient = new CClientSocket();
  36. ASSERT(m_pNewClient != NULL);
  37. Accept(*m_pNewClient);
  38. CMainFrame * pFrame = static_cast <CMainFrame *>(AfxGetMainWnd());
  39. /* //发送所有的房间列表
  40. Message msObj;
  41. ::ZeroMemory(&msObj,sizeof(msObj));
  42. msObj.iType = USERLOG;
  43. msObj.iSubType = ROOMLIST;
  44. if(theApp.m_ChatRoomList.GetCount())
  45. {
  46. POSITION pos = theApp.m_ChatRoomList.GetHeadPosition();
  47. if(pos)
  48. {
  49. for(int i = 0 ; i < theApp.m_ChatRoomList.GetCount();i ++)
  50. {
  51. CString * m_pstrRoom = static_cast < CString *>(theApp.m_ChatRoomList.GetNext(pos));
  52. ASSERT(m_pstrRoom != NULL);
  53. int iLen = m_pstrRoom->GetLength();
  54. iLen > 20 ? iLen : 20;
  55. lstrcpy(msObj.strRoom,m_pstrRoom->GetBuffer(iLen));
  56. m_pNewClient->Send(&msObj,sizeof(msObj));
  57. CString strOut;
  58. strOut.Format("%d %d %s %sn",msObj.iType,msObj.iSubType,msObj.strRoom,msObj.strName);
  59. TRACE0(strOut);
  60. Sleep(200);
  61. }
  62. }
  63. }
  64. //发送所有的用户资料
  65. msObj.iType = USERLOG;
  66. msObj.iSubType = USERLIST;
  67. CPtrList * m_pClientList = theApp.m_pClientSocketList;
  68. POSITION pos = m_pClientList ->GetHeadPosition();
  69. int iCount = m_pClientList ->GetCount();
  70. if(pos && iCount > 0)
  71. { CClientSocket *  m_pClientSocket;
  72. for(int i = 0; i < iCount; i++)
  73. {
  74. m_pClientSocket = static_cast < CClientSocket *>(m_pClientList->GetNext(pos));
  75. CString strTemp = m_pClientSocket ->GetRoomName();
  76. int iLen = strTemp.GetLength();
  77. iLen > 20 ? 20 : iLen;
  78. lstrcpy(msObj.strRoom,strTemp.GetBuffer(iLen));
  79. strTemp.ReleaseBuffer();
  80. strTemp = m_pClientSocket ->GetUserName();
  81. iLen = strTemp.GetLength();
  82. iLen > 20 ? 20 : iLen;
  83. lstrcpy(msObj.strName,strTemp.GetBuffer(iLen));
  84. strTemp.ReleaseBuffer();
  85. m_pNewClient->Send(&msObj,sizeof(msObj));
  86. Sleep(100);
  87. }
  88. }
  89. theApp.m_pClientSocketList->AddTail(m_pNewClient);
  90. g_cs.Unlock();*/
  91. return;
  92. }