MyUdpSocket.cpp
上传用户:deligs
上传日期:2007-01-08
资源大小:43k
文件大小:2k
源码类别:

网络编程

开发平台:

Visual C++

  1. // MyUdpSocket.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "MyMonitor.h"
  5. #include "MyUdpSocket.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. #define LOG(x) { if((m_pLogFile->m_uLogLevel) > 0) m_pLogFile->WriteLog(m_csModuleName+x); }
  12. #define INFO(x) { if((m_pLogFile->m_uLogLevel) > 1) m_pLogFile->WriteLog(m_csModuleName+x); }
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CMyUdpSocket
  15. CMyUdpSocket::CMyUdpSocket()
  16. {
  17.  m_csModuleName = LOG_STR_SOCKET_NAME;
  18. }
  19. CMyUdpSocket::~CMyUdpSocket()
  20. {
  21. }
  22. // Do not edit the following lines, which are needed by ClassWizard.
  23. #if 0
  24. BEGIN_MESSAGE_MAP(CMyUdpSocket, CAsyncSocket)
  25. //{{AFX_MSG_MAP(CMyUdpSocket)
  26. //}}AFX_MSG_MAP
  27. END_MESSAGE_MAP()
  28. #endif // 0
  29. /////////////////////////////////////////////////////////////////////////////
  30. // CMyUdpSocket member functions
  31. BOOL CMyUdpSocket::ChecksumValid()
  32. {
  33. return TRUE;
  34. }
  35. void CMyUdpSocket::SendFirstPacket()
  36. {
  37. // Prepare the data packet here
  38. BYTE bData[8];
  39. //bData[0]=...
  40. //bData[1]=...
  41. //...
  42. Send((void*)&bData,8);
  43. }
  44. BOOL CMyUdpSocket::Initial() 
  45. {
  46. int iResult = Create(0,SOCK_DGRAM); // Create as a UDP port
  47. if(!iResult)
  48. {
  49. LOG(LOG_STR_SOCKET_CREATE_ERROR + m_csAddress);
  50. return FALSE;
  51. }
  52. iResult = Connect(m_csAddress, m_uRemotePort);
  53. if(!iResult)
  54. {
  55. LOG(LOG_STR_SOCKET_ERROR + m_csAddress);
  56. return FALSE;
  57. }
  58. // Get the local port that the system assigned for you
  59. CString socketAddress;
  60. GetSockName(socketAddress, m_uLocalPort);
  61. return TRUE;
  62. }
  63. void CMyUdpSocket::OnReceive(int nErrorCode) 
  64. {
  65. // TODO: Add your specialized code here and/or call the base class
  66. BYTE szBuf[100];
  67. int iReceived;
  68. // Receive the message
  69. iReceived = Receive(szBuf, sizeof(szBuf));
  70. // Did we receive anything?
  71. if(iReceived == 0)
  72. {
  73. // If nothing
  74. //...
  75. return;
  76. }
  77. else if(iReceived == SOCKET_ERROR)
  78. {
  79. // Get the error and handle it
  80. LOG(LOG_STR_SOCKET_RECEIVE_ERROR + m_csAddress);
  81. return;
  82. }
  83. else
  84. {
  85. // Else analyze the response data here
  86. //...
  87. if( ChecksumValid() )
  88. {
  89. if( m_dwState == STAT_MYUDPC_SENDFIRST )
  90. {
  91. m_dwState = STAT_MYUDPC_SENDSECOND;
  92. return;
  93. }
  94. }
  95. }
  96. CAsyncSocket::OnReceive(nErrorCode);
  97. }