注册
登录
会员
标签
鲜花鸡蛋
插件
帮助
Linux伊甸园论坛
»
C/C++ (STL/boost)
» SOS:linux网络编程的怪问题
‹‹ 上一主题
|
下一主题 ››
发新话题
发布投票
发布商品
发布悬赏
发布活动
发布辩论
发布视频
打印
SOS:linux网络编程的怪问题
log290
初来乍到
注册用户
帖子
12
精华
0
积分
6
鲜花
0
鸡蛋
0
在线时间
0 小时
发短消息
加为好友
当前离线
楼主贴
大
中
小
发表于 2006-7-25 12:22
只看该作者
SOS:linux网络编程的怪问题
小弟近日在uCLinux中(运行在ARM7上)写了一个用UDP通讯的服务程序,可以传输数据,但是传了一段时间之后,网络突然ping不通,将eth0 down 了之后在 up,又恢复正常。(持续传输的时间长度不定,有时可传几十MB,有时只可传十几KB)
# V+ B) e$ Y. v' E6 P _6 d( ~
. O: o0 q# Z3 _; h5 Y7 O5 Y
ping不通时,抓包可看到uCLinux有ARP地址解释请求发出,并且对应的主机已经回答了这个请求,但是uCLinux还是一直在发ARP地址解释请求的报文,即uCLinux并没有正确得到对应主机的MAC地址。
1 G! j3 o+ w `- _- {3 [
8 O' ^+ B- E: B4 V# g2 a6 n6 m5 s H+ X
若手动给uCLinux加上对应主机的MAC地址再ping,则主机能收到uCLinux的ICMP request报文,而且回复了ICMP reply报文,但是uCLinux显示的状态还是ping不通。
) S2 M8 F- y4 c
) d# z. ^ \4 {4 I
小弟调了两天了,没有什么头绪,希望各位大虾指点一把,小弟拜谢了先!
1 U4 m! t. y! [! R: z. [1 g0 b
! T7 Z- }& U; I2 i) ]( e
此外,若在服务程序中加入一些打印语句进行调试,对持续传输的时间长度也有影响,输出太频繁,持续的时间会越短。
UID
144258
帖子
12
精华
0
积分
6
贡献积分
0
论坛活跃
12
公关推广
10
鲜花
0
鸡蛋
0
在线时间
0 小时
注册时间
2005-12-6
最后登录
2006-8-30
查看详细资料
TOP
flag
版主
版主
帖子
5581
精华
1
积分
467
鲜花
0
鸡蛋
0
在线时间
54 小时
发短消息
加为好友
当前离线
呵呵抢到沙发了
大
中
小
发表于 2006-7-25 19:36
只看该作者
怀疑是缓冲区的问题?
上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。
UID
19801
帖子
5581
精华
1
积分
467
贡献积分
28
论坛活跃
2173
公关推广
12
鲜花
0
鸡蛋
0
在线时间
54 小时
注册时间
2002-7-19
最后登录
2008-5-17
查看详细资料
TOP
flag
版主
版主
帖子
5581
精华
1
积分
467
鲜花
0
鸡蛋
0
在线时间
54 小时
发短消息
加为好友
当前离线
板凳位置
大
中
小
发表于 2006-7-25 19:48
只看该作者
不过为什么会传输中还发ARP请求?MAC地址记录丢失了?
上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。
UID
19801
帖子
5581
精华
1
积分
467
贡献积分
28
论坛活跃
2173
公关推广
12
鲜花
0
鸡蛋
0
在线时间
54 小时
注册时间
2002-7-19
最后登录
2008-5-17
查看详细资料
TOP
log290
初来乍到
注册用户
帖子
12
精华
0
积分
6
鲜花
0
鸡蛋
0
在线时间
0 小时
发短消息
加为好友
当前离线
只剩马扎了
大
中
小
发表于 2006-7-26 16:06
只看该作者
谢谢flag,是我没有把问题说清楚。ARP请求是在不能传输数据之后,我用ping命令引发的ARP地址解释请求,不是在传输过程中发的。
0 ]6 m0 d9 D- V9 r! v1 P
还有flag斑竹提到的缓冲区是指应用层缓冲区,还是只内核网络驱动中的缓冲区的呢?具体问题是指缓冲区越界吗?
UID
144258
帖子
12
精华
0
积分
6
贡献积分
0
论坛活跃
12
公关推广
10
鲜花
0
鸡蛋
0
在线时间
0 小时
注册时间
2005-12-6
最后登录
2006-8-30
查看详细资料
TOP
flag
版主
版主
帖子
5581
精华
1
积分
467
鲜花
0
鸡蛋
0
在线时间
54 小时
发短消息
加为好友
当前离线
委屈了,只有地板
大
中
小
发表于 2006-7-26 16:42
只看该作者
不能传输数据之后……那还是可能因为MAC记录丢失了所以无法传输啊。
9 D8 y9 N' g" _
也有可能是因为内存分配的问题,至于定位在什么地方就难说了。比如内存卸载等……
+ R; U8 ]3 @# q# c. ~9 ]6 V
缓冲区越界这种应该会出很明显的内存错误。
上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。
UID
19801
帖子
5581
精华
1
积分
467
贡献积分
28
论坛活跃
2173
公关推广
12
鲜花
0
鸡蛋
0
在线时间
54 小时
注册时间
2002-7-19
最后登录
2008-5-17
查看详细资料
TOP
log290
初来乍到
注册用户
帖子
12
精华
0
积分
6
鲜花
0
鸡蛋
0
在线时间
0 小时
发短消息
加为好友
当前离线
6楼
大
中
小
发表于 2006-7-27 08:52
只看该作者
我又试了很多遍,各种迹象都表明flag所说的原因(缓冲区管理)最有可能,但是还未定位错误,只是有了一个往下做的思路,谢谢斑竹。有了进展我在回复!;-)
UID
144258
帖子
12
精华
0
积分
6
贡献积分
0
论坛活跃
12
公关推广
10
鲜花
0
鸡蛋
0
在线时间
0 小时
注册时间
2005-12-6
最后登录
2006-8-30
查看详细资料
TOP
chenphoenix
注册会员
注册用户
帖子
63
精华
0
积分
20
鲜花
0
鸡蛋
0
在线时间
0 小时
发短消息
加为好友
当前离线
7楼
大
中
小
发表于 2006-7-27 16:14
只看该作者
难道有人给它发了重定向?
曾经有一个古老的传说。 传说中的主人公叫传说。 而我就是传说中的传说。
UID
114495
帖子
63
精华
0
积分
20
贡献积分
0
论坛活跃
76
公关推广
14
鲜花
0
鸡蛋
0
在线时间
0 小时
注册时间
2005-3-27
最后登录
2007-3-12
查看详细资料
TOP
log290
初来乍到
注册用户
帖子
12
精华
0
积分
6
鲜花
0
鸡蛋
0
在线时间
0 小时
发短消息
加为好友
当前离线
8楼
大
中
小
发表于 2006-7-28 17:14
只看该作者
偶把代码中的缓冲区操作尽量缩小,好像就好了,不过问题还是没有确切知道在那里。删掉的缓冲区操作代码逻辑上是没问题的,有可能是因为网络驱动的skb_buf和应用程序的缓冲区在内核中存在某种冲突(偶的嵌入式系统SDRAM只有8MB,应用程序最多可用4MB左右)。具体问题还在研究中,有进展我再贴出来大家共享。
5 p- v* M5 e) T7 }( w, m! c
`4 N U" F6 P3 e8 l
不管怎么说,还是非常感谢flag版主!谢谢!
UID
144258
帖子
12
精华
0
积分
6
贡献积分
0
论坛活跃
12
公关推广
10
鲜花
0
鸡蛋
0
在线时间
0 小时
注册时间
2005-12-6
最后登录
2006-8-30
查看详细资料
TOP
lishengg
初来乍到
注册用户
帖子
1
精华
0
积分
4
鲜花
0
鸡蛋
0
在线时间
0 小时
发短消息
加为好友
当前离线
9楼
大
中
小
发表于 2007-1-15 21:57
只看该作者
【求助】您好,我也碰到同样问题,您能提示一下您是如何解决的吗?
非常感谢! 解决方法请回复
lishengg@163.com
UID
179152
帖子
1
精华
0
积分
4
贡献积分
0
论坛活跃
1
公关推广
10
鲜花
0
鸡蛋
0
在线时间
0 小时
注册时间
2007-1-15
最后登录
2007-1-15
查看详细资料
TOP
‹‹ 上一主题
|
下一主题 ››
控制面板首页
编辑个人资料
积分记录
公众用户组
勋章
访问推广
领取红包
基本概况
版块排行
主题排行
发帖排行
积分排行
交易排行
在线时间
管理团队
管理统计
best dvd copy software