阅读:1570回复:8
HuYuguang,gjpland及各位大虾帮忙指点!(50)
对PASSTHRU做了修改,把相应包的内容COPY到自己申请的内存中,
每次在相应位置ALLOC和FREE,no problem. 由于这样做效率低,所以我想改为一次性申请释放,于是在ptbindadapt中申请两个全局内存,让收发包,分别使用这两块内存,当然每次是用前要zeromemory。最后在mphalt释放。 但是,奇怪的事发生了,只在send时使用全局的内存,no problem,但在receive中使用时,上网,发现网页只能打开部分。 通过ftp试验,发现肯定有错包。还有,上qq ,ping时, no problem。 哎,真是很奇怪,不明白怎么回事。 繁劳各位,如果哪位知道是什么原因,或是遇到过类似情况, 清帮忙指点一下! 谢谢! 嗬嗬! |
|
|
沙发#
发布于:2002-07-02 09:07
对PASSTHRU做了修改,把相应包的内容COPY到自己申请的内存中, 我建议你查一查大包的处理。 |
|
|
板凳#
发布于:2002-07-02 15:10
好像不是大包的问题吧,我还没encry,mac,add iphead.
还没调我的分片代码来。 嗬嗬! |
|
|
地板#
发布于:2002-07-02 15:37
你机子上装了几块网卡?要是多余一块的话,好像在PtUnbindAdapter里释放比较好。但我感觉你的现象好像不是这里的问题,给你参考吧。
|
|
|
地下室#
发布于:2002-07-02 17:45
你机子上装了几块网卡?要是多余一块的话,好像在PtUnbindAdapter里释放比较好。但我感觉你的现象好像不是这里的问题,给你参考吧。 thank u. 不过,我是一块网卡。应该不是这的问题。 嗬嗬! |
|
|
5楼#
发布于:2002-07-03 08:56
有考虑代码的重入吗?
|
|
6楼#
发布于:2002-07-03 09:41
应该是代码的重入造成的,我以前也碰到过这样的问题,由于未做同步处理,结果每当IP包超过1420字节时就会有错。加了spinlock就搞定了。
|
|
7楼#
发布于:2002-07-03 13:32
好方法
|
|
|
8楼#
发布于:2002-07-03 16:56
应该是代码的重入造成的,我以前也碰到过这样的问题,由于未做同步处理,结果每当IP包超过1420字节时就会有错。加了spinlock就搞定了。 我也碰到过fenger_li一样的问题,我检查过我每次接收到packet中buffer的数量,都是1,并且没有碰到ip超过1420的情形(有可能我检查的不太仔细,太多行,总可能有遗漏)。 我按照bingjie的方法试过,还是不行(我在padapt结构中加入了一个自己定义的锁,在ptbindadapter中初始化,在ptreceivepacket中使用之前锁定然后在mpreturnpacket中释放这个锁)。 冰杰老兄,能帮我分析一下这个问题吗?什么环节有问题呢? |
|
|