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

网络编程

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "MyUdpInfo.h"
  3. /////////////////////////////////////////////////////////////////////////////
  4. // CMyUdpInfo Contruction
  5. CMyUdpInfo::CMyUdpInfo()
  6. {
  7. // auto reset, initially reset
  8. m_hEvent_Kill = CreateEvent(NULL, FALSE, FALSE, NULL); 
  9. // manual reset, initially set
  10. m_hEvent_Killed = CreateEvent(NULL, TRUE, TRUE, NULL); 
  11. // auto reset, initially reset
  12. m_hEvent_GetParametersDone = CreateEvent(NULL, FALSE, FALSE, NULL);
  13. for(int i=0;i<100;i++)
  14. m_baMessageShowing[i] = FALSE;
  15. }
  16. CMyUdpInfo::~CMyUdpInfo()
  17. {
  18. // Free the events
  19. CloseHandle(m_hEvent_Kill);
  20. CloseHandle(m_hEvent_Killed);
  21. CloseHandle(m_hEvent_GetParametersDone);
  22. }
  23. BOOL CMyUdpInfo::AddressValid()
  24. {
  25. CStringArray csa;
  26. SplitAddress(csa);
  27. int tmp;
  28. for(int i=0;i<4;i++)
  29. {
  30. if(csa[i].IsEmpty())
  31. {
  32. return FALSE;
  33. }
  34. else
  35. {
  36. tmp = atoi(LPCTSTR(csa[i]));
  37. if((tmp<1) || (tmp>254))
  38. {
  39. return FALSE;
  40. }
  41. }
  42. }
  43. return TRUE;
  44. }
  45. BOOL CMyUdpInfo::AddressBlank()
  46. {
  47. CStringArray csa;
  48. SplitAddress(csa);
  49. if( csa[0].IsEmpty() && csa[1].IsEmpty() && csa[2].IsEmpty() && csa[3].IsEmpty() )
  50. return TRUE;
  51. else
  52. return FALSE;
  53. }
  54. void CMyUdpInfo::SplitAddress(CStringArray& AddIt)
  55. {
  56. // initialize the variables
  57. CString  newCString = m_csAddress;
  58. CString  tmpCString = "";
  59. CString  AddCString = "";
  60. int pos1 = 0;
  61. int pos = 0;
  62. int indexNow = 0;
  63. AddIt.RemoveAll();
  64. AddIt.Add("");
  65. AddIt.Add("");
  66. AddIt.Add("");
  67. AddIt.Add("");
  68. CString Deliminator = "."; 
  69. // do this loop as long as you have a deliminator
  70. do {
  71. // set to zero
  72. pos1 = 0;
  73. // position of deliminator starting at pos1 (0)
  74. pos = newCString.Find(Deliminator, pos1);
  75. // if the deliminator is found...
  76. if ( pos != -1 ) 
  77. {
  78. // load a new var with the info left
  79. // of the position
  80. CString AddCString = newCString.Left(pos);
  81. AddIt.SetAt(indexNow, AddCString);
  82. indexNow++;
  83. // make a copy of the of this var. with the info
  84. // right of the deliminator
  85. tmpCString = newCString.Mid(pos + Deliminator.GetLength());
  86. // reset this var with new info
  87. newCString = tmpCString;
  88. }
  89. } while ( pos != -1 );
  90. AddIt.SetAt(indexNow, newCString);
  91. }