Chinaunix首页 | 论坛 | 博客
  • 博客访问: 567267
  • 博文数量: 493
  • 博客积分: 2891
  • 博客等级: 少校
  • 技术积分: 4960
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-17 17:11
文章分类

全部博文(493)

文章存档

2010年(493)

分类:

2010-05-12 19:52:37

1 现象:问题描述
某局点升级后,不定期地所有客户端全部与服务器断连。
2 关键过程:根本原因分析
系统架构描述:
 客户端登录服务器A,服务器A将客户端的IP地址发到服务器B保存。如果服务器A与服务器B断连,服务器A与服务器B重连后,会从服务器B获取各客户端的IP地址,并向这些客户端发送重连通知。
问题原因描述:
由于某些原因(该原因不在此案例考虑),导致服务器A与服务器B会闪断几秒钟,从而服务器A会从服务器B获取各客户端的IP地址,并向这些客户端发送重连通知。
服务器B在给服务器A发送消息时,未考虑到IP地址本来就是网络字节序,而是根据数据类型(IP地址保存在ULONG数据结构中)进行本机字节序到网络字节序的转换。结果服务器A得到的IP地址不正确,服务器A给各客户端发送重连通知时,由于客户端IP地址不正确,导致通知不到客户端,结果各客户端与服务器的重连机制没有生效,所有客户端与服务器A断连。
3 结论:解决方案及效果
修改服务器B的字节序转换部分,不对IP地址做字节序转换。问题解决。
4 经验总结:预防措施和规范建议
通过系统函数获取到的IP地址本身已是网络字节序,不需要对它们再做转换。
5 备注
NA
6 考核点
通过系统函数获取到的IP地址本身已是网络字节序,不需要对它们再做转换。
7 试题
以下变量作为消息中的成员,在不同机器间传送时,不需要对字节序进行转换的是(C)
A. unsigned long ulvalue = 1000;
B. unsigned short usvalue = 100;
C. unsigned long ulvalue = inet_addr("10.71.105.33");
D. unsigned int uivalue = 1000;
阅读(677) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~