设为首页 加入收藏

TOP

VC++实现TCP与UDP链接(五)
2013-04-24 12:11:47 来源: 作者: 【 】 浏览:946
Tags:实现 TCP UDP 链接

 

  // 打印UDP监听表信息

  PMIB_UDPTABLE pUdpTable = MyGetUdpTable(TRUE);

  if(pUdpTable != NULL)

  {

  struct in_addr inadLocal;

  printf("UDP TABLE\n");

  printf("%20s %10s\n", "Loc Addr", "Loc Port");

  for (UINT i = 0; i < pUdpTable->dwNumEntries; ++i)

  {

  inadLocal.s_addr = pUdpTable->table[i].dwLocalAddr;

  // 打印出此入口的信息

  printf("%20s %10u \n",

  inet_ntoa(inadLocal), ntohs((unsigned short)(0x0000FFFF & pUdpTable->table[i].dwLocalPort)));

  }

  MyFreeUdpTable(pUdpTable);

  }

  return 0;

  }

  PMIB_TCPTABLE MyGetTcpTable(BOOL bOrder)

  {

  PMIB_TCPTABLE pTcpTable = NULL;

  DWORD dwActualSize = 0;

  // 查询所需缓冲区的大小

  if(::GetTcpTable(pTcpTable, &dwActualSize, bOrder) == ERROR_INSUFFICIENT_BUFFER)

  {

  // 为MIB_TCPTABLE结构申请内存

  pTcpTable = (PMIB_TCPTABLE)::GlobalAlloc(GPTR, dwActualSize);

  // 获取TCP连接表

  if(::GetTcpTable(pTcpTable, &dwActualSize, bOrder) == NO_ERROR)

  return pTcpTable;

  ::GlobalFree(pTcpTable);

  }

  return NULL;

  }

  void MyFreeTcpTable(PMIB_TCPTABLE pTcpTable)

  {

  if(pTcpTable != NULL)

  ::GlobalFree(pTcpTable);

  }

  PMIB_UDPTABLE MyGetUdpTable(BOOL bOrder)

  {

  PMIB_UDPTABLE pUdpTable = NULL;

  DWORD dwActualSize = 0;

  // 查询所需缓冲区的大小

  if(::GetUdpTable(pUdpTable, &dwActualSize, bOrder) == ERROR_INSUFFICIENT_BUFFER)

  {

  // 为MIB_UDPTABLE结构申请内存

  pUdpTable = (PMIB_UDPTABLE)::GlobalAlloc(GPTR, dwActualSize);

  // 获取UDP监听表

  if(::GetUdpTable(pUdpTable, &dwActualSize, bOrder) == NO_ERROR)

  return pUdpTable;

  ::GlobalFree(pUdpTable);

  }

  return NULL;

  }

  void MyFreeUdpTable(PMIB_UDPTABLE pUdpTable)

  {

  if(pUdpTable != NULL)

  ::GlobalFree(pUdpTable);

  }

        

首页 上一页 2 3 4 5 6 下一页 尾页 5/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇VC++基于LSP拦截数据封包 下一篇VC++实现获取DNS服务器

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: