raw socket java_记一次蛋疼的Raw socket发送经历。附:Raw socket编程总结

最近在做信息安全导论的实验,实验很简单,就是实现一个ping程序,能够扫描主机是否打开的情况,但是,我也就纳了闷了,每次有个不易发现的bug(可能由于自己知识有限造成的),都得让我碰上,并且还得为这个bug操心好长时间,才能解决。。。。。。(抱怨是最浪费时间的一种行为!)ok~为了下次不再犯同样的错误,现在先记录一下吧~

我的错误是,在一切都准备好了的时候(初始化套接字,创建套接字,填充icmp数据头,设定超时时间)发送数据包,成功,但是一旦接受就会超时,为此,我找了个能发送成功的程序,一步步的对照着看看哪儿不一样,但是对照完了,发现一些核心代码是一样的。。。。。。这就蛋疼了,然后我就怀疑是不是因为这些小的错误导致的呢?我一步步的改正,首先我怀疑我的可能是因为发送和接受我放在了不同的函数里面,导致,在一个函数返回的时间里,接受函数错过了接受(现在想想真是有病乱投医啊。。。。。。。操作系统在端口应该有缓存的吧,在接受到数据后,会存到缓存里,然后才会调用。。。。。)我就把所有函合并成了一个函数,果不其然,没有任何效果,依旧是发送超时。在经历无尽的折磨以后,我发现我的变量全是定义在类里面的,而其他的程序就是在函数里面直接声明,或者就是全局变量的,难道是因为类,半信半疑我就把所有定义在类里面的变量放到了cpp文件当中,作为全局变量调用,成功了~我去了!不应该啊,这是因为啥???在一个函数调用类里面的变量后,不改变内存中值?上课时

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值