Server.cpp
上传用户:sycq158
上传日期:2008-10-22
资源大小:15361k
文件大小:1k
源码类别:

游戏

开发平台:

Visual C++

  1. // Server.cpp: implementation of the CServer class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "Example1.h"
  6. #include "Server.h"
  7. #include "Example1Dlg.h"
  8. #ifdef _DEBUG
  9. #undef THIS_FILE
  10. static char THIS_FILE[]=__FILE__;
  11. #define new DEBUG_NEW
  12. #endif
  13. //////////////////////////////////////////////////////////////////////
  14. // Construction/Destruction
  15. //////////////////////////////////////////////////////////////////////
  16. CServer::CServer()
  17. {
  18. m_hSocket=NULL;
  19. }
  20. CServer::~CServer()
  21. {
  22. WSAAsyncSelect(m_hSocket, m_hWnd, 0, 0);
  23. }
  24. BOOL CServer::InitAndListen(HWND hwnd,UINT port)
  25. {
  26. m_uPort=port;
  27. m_hWnd=hwnd;
  28. if(m_hSocket != NULL)
  29.     {
  30. closesocket(m_hSocket);
  31. m_hSocket = NULL;
  32. }
  33. m_hSocket = socket(AF_INET, SOCK_STREAM,0);
  34. ASSERT(m_hSocket != NULL);
  35. ServerInit();
  36. m_addr.sin_family = AF_INET;
  37. m_addr.sin_addr.S_un.S_addr = INADDR_ANY;
  38. m_addr.sin_port = htons(m_uPort);
  39. int ret = 0;
  40. int error = 0;
  41. ret = bind(m_hSocket, (LPSOCKADDR)&m_addr, sizeof(m_addr));
  42. if(ret == SOCKET_ERROR)
  43. {
  44. AfxMessageBox("Binding Error");
  45. return FALSE;
  46. }
  47. ret = listen(m_hSocket, 5);
  48. if(ret == SOCKET_ERROR)
  49. {
  50. AfxMessageBox("Listen Error");
  51. return FALSE;
  52. }
  53. return TRUE;
  54. }
  55. void CServer::ServerInit()
  56. {
  57. if(WSAAsyncSelect(m_hSocket, m_hWnd, SER_MESSAGE, FD_ACCEPT|FD_READ|FD_WRITE|FD_CLOSE)>0)
  58. AfxMessageBox("error select");
  59. }