免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2838 | 回复: 2
打印 上一主题 下一主题

[C++] C++如何检测防火墙有没有禁闭某个出端口(目的端口) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-18 20:07 |只看该作者 |倒序浏览
本帖最后由 ohyeahbbs 于 2012-08-18 20:13 编辑

例如我在本地安全设置里面新建个IP筛选器:
阻止 UDP 从本地任意源端口 到9100的目标端口。如图:


现在远端的服务器有个UDP的服务在9100端口监听接收特定格式的数据报,不符合格式的话给丢弃。我又不知道这个格式如何的

我想要写个C++的程序去检测本地到远端服务器的目标端口9100有没有被阻止(像IP筛选器那样阻止)。如何才能做到?

论坛徽章:
0
2 [报告]
发表于 2012-08-18 20:08 |只看该作者
本帖最后由 ohyeahbbs 于 2012-08-18 20:08 编辑
  1. m_socketRaw = WSASocket(AF_INET, SOCK_RAW, IPPROTO_ICMP, NULL, 0, WSA_FLAG_OVERLAPPED);
  2. if (m_socketRaw == INVALID_SOCKET)
  3.     return false;
  4. //设置发送时限.
  5. int nTimeout = 500;
  6. nResult = setsockopt(m_socketRaw, SOL_SOCKET, SO_SNDTIMEO, (char*)&nTimeout, sizeof(nTimeout));
  7. if (nResult == SOCKET_ERROR)
  8.     return false;

  9. addrDsc.sin_family = AF_INET;
  10. addrDsc.sin_addr.S_un.S_addr = inet_addr(pDscAddr);
  11. addrDsc.sin_port = htonl(9100);
  12. nRet = sendto(m_socketRaw, szUdpData, strlen(szUdpData), 0, (sockaddr*)&addrDsc, sizeof(addrDsc));
  13. if (nRet == SOCKET_ERROR)
  14. {
  15.    int nRet = WSAGetLastError();
  16.    ....
  17.    ....
  18. }
复制代码
我这样写的话,发现每次都是成功发出的。。。。sendto是不是只负责把数据发给底层驱动而不管是否成功发出的?

论坛徽章:
0
3 [报告]
发表于 2012-08-18 20:10 |只看该作者
C++或MFC里有没有检测这类的API的?
求大侠指点!万分感激!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP