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

游戏

开发平台:

Visual C++

  1. // Client.cpp: implementation of the CClient class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "Example1.h"
  6. #include "Client.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. CClient::CClient()
  17. {
  18. m_hSocket =NULL;
  19. }
  20. CClient::~CClient()
  21. {
  22. }
  23. BOOL CClient::InitAndConnet(HWND hwnd,UINT port,CString strserver)
  24. {
  25. m_hWnd=hwnd;
  26. m_uPort=port;
  27. m_strServer=strserver;
  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. ClientInit();
  36. m_addr.sin_family = AF_INET;
  37. m_addr.sin_addr.S_un.S_addr = inet_addr(m_strServer.GetBuffer(0));
  38. m_addr.sin_port = htons(m_uPort);
  39. int ret = 0;
  40. int error = 0;
  41. ret = connect(m_hSocket, (LPSOCKADDR)&m_addr, sizeof(m_addr));
  42. if(ret == SOCKET_ERROR)
  43. {
  44. if(GetLastError()!=WSAEWOULDBLOCK)
  45. {
  46. AfxMessageBox(_T("请确认服务器确实已经打开并工作在同样的端口!"));
  47. return FALSE;
  48. }
  49. }
  50. return TRUE;
  51. }
  52. void CClient::SendString(CString a)
  53. {
  54. if(send(m_hSocket,a.GetBuffer(0),a.GetLength(),0)==SOCKET_ERROR)
  55. {
  56. AfxMessageBox("Client Send data error");
  57. }
  58. }
  59. void CClient::GetString(CString &str)
  60. {
  61. recv(m_hSocket,str.GetBuffer(0),1024,MSG_DONTROUTE);
  62. }
  63. void CClient::ClientInit()
  64. {
  65. if(WSAAsyncSelect(m_hSocket,m_hWnd,CLI_MESSAGE,FD_READ|FD_WRITE|FD_CLOSE|FD_CONNECT)>0)
  66. {
  67. AfxMessageBox("Error in select");
  68. }
  69. }