Server.cpp
上传用户:bsw_2008
上传日期:2013-07-09
资源大小:2446k
文件大小:2k
源码类别:

棋牌游戏

开发平台:

Visual C++

  1. // Server.cpp: implementation of the CServer class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "CServerFrame.h"
  6. #include "CServerFrameView.h"
  7. #include "Server.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. }
  19. CServer::~CServer()
  20. {
  21. WSAAsyncSelect(m_hSocket,m_hWnd,0,0);
  22. }
  23. void CServer::ServerInit()
  24. {
  25. //设置socket的异步模式
  26. if(WSAAsyncSelect(m_hSocket, m_hWnd, SER_MESSAGE, FD_ACCEPT|FD_READ|FD_WRITE|FD_CLOSE)>0)
  27. AfxMessageBox("error select");
  28. }
  29. BOOL CServer::InitAndListen(HWND hWnd, UINT port)
  30. {
  31. m_uPort=port;
  32. m_hWnd=hWnd;
  33. if(m_hSocket!=NULL)
  34. {
  35. //先关闭已经打开的socket
  36. closesocket(m_hSocket);
  37. m_hSocket=NULL;
  38. }
  39. //创建面向连接的流方式的套接字
  40. m_hSocket=socket(AF_INET,SOCK_STREAM,0);
  41. ASSERT(m_hSocket!=NULL);
  42. ServerInit();
  43. m_addr.sin_family=AF_INET;
  44. m_addr.sin_addr.S_un.S_addr=INADDR_ANY;
  45. m_addr.sin_port=htons(m_uPort);
  46. int ret=0;
  47. int error=0;
  48. //绑定套接字到本机的某个端口
  49. ret=bind(m_hSocket,(LPSOCKADDR)&m_addr,sizeof(m_addr));
  50. if(ret == SOCKET_ERROR)
  51. {
  52. AfxMessageBox("Binding Error");
  53. return FALSE;
  54. }
  55. ret = listen(m_hSocket, 64);
  56. if(ret == SOCKET_ERROR)
  57. {
  58. AfxMessageBox("Listen Error");
  59. return FALSE;
  60. }
  61. return TRUE;
  62. }