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) |