comm.cpp
上传用户:zhangjjyh
上传日期:2021-11-11
资源大小:1251k
文件大小:1k
源码类别:

P2P编程

开发平台:

Objective-C

  1. //////////////////////////////////////////////////////
  2. // comm.cpp文件
  3. #include <winsock2.h>
  4. #include <windows.h>
  5. #include "comm.h"
  6. ///////////////////////////////////////////////////////////////////////
  7.  
  8. CPeerList::CPeerList()
  9. {
  10. m_nCurrentSize = 0;
  11. m_nTatolSize = 100;
  12. m_pPeer = new PEER_INFO[m_nTatolSize];
  13. }
  14. CPeerList::~CPeerList()
  15. {
  16. delete[] m_pPeer;
  17. }
  18. BOOL CPeerList::AddAPeer(PEER_INFO *pPeer)
  19. {
  20. if(GetAPeer(pPeer->szUserName) != NULL)
  21. return FALSE;
  22. // 申请空间
  23. if(m_nCurrentSize >= m_nTatolSize) // 已经用完?
  24. {
  25. PEER_INFO *pTmp = m_pPeer;
  26. m_nTatolSize = m_nTatolSize * 2;
  27. m_pPeer = new PEER_INFO[m_nTatolSize];
  28. memcpy(m_pPeer, pTmp, m_nCurrentSize);
  29. delete pTmp;
  30. }
  31. // 添加到表中
  32. memcpy(&m_pPeer[m_nCurrentSize ++], pPeer, sizeof(PEER_INFO));
  33. return TRUE;
  34. }
  35. PEER_INFO *CPeerList::GetAPeer(char *pszUserName)
  36. {
  37. for(int i=0; i<m_nCurrentSize; i++)
  38. {
  39. if(stricmp(m_pPeer[i].szUserName, pszUserName) == 0)
  40. {
  41. return &m_pPeer[i];
  42. }
  43. }
  44. return NULL;
  45. }
  46. void CPeerList::DeleteAPeer(char *pszUserName)
  47. {
  48. for(int i=0; i<m_nCurrentSize; i++)
  49. {
  50. if(stricmp(m_pPeer[i].szUserName, pszUserName) == 0)
  51. {
  52. memcpy(&m_pPeer[i], &m_pPeer[i+1], (m_nCurrentSize - i - 1)*sizeof(PEER_INFO));
  53. m_nCurrentSize --;
  54. break;
  55. }
  56. }
  57. }
  58. void CPeerList::DeleteAllPeers()
  59. {
  60. m_nCurrentSize = 0;
  61. }