问:你打算怎样实现客户端的网络层?
答:对于TCP协议来说无非就是connect,send,recv呗。
问:那你是否考虑到这种情况,你同时或者先后发过去两个网络请求,你怎么确定你收到回复是哪个请求的?
(其实问到这时有些同事就开始不理解了,我会给他们解释网络传输和服务器处理不是串行的,往往会出现你后发的请求却先收到回复,客户端 多线程情况下更为常见。当然也有有办法的。)
答:那我对每一个请求加一个唯一标识,这样我就可以分辨出来了。
问:你有没有考虑过由于connect,send,recv...这些系统API都是阻塞的,如果没有限制条件,会让你的一个请求卡住很长时间或者永远卡住?
问:你有没有考虑过短连接请求,长连接请求,服务端推送消息如何实现?
问:你有没有考虑过各种网络错误和异常的监控和处理,比如TCP长连接网络断开后的自动重连?
问:你有没有考虑过如果你把网络层或者网络数据层和前台业务和界面混杂在一起后的代码混乱复杂度?
问:你对TCP了解多少,仅仅是会用网络编程的API还是知道TCP还拥有一些诸如TIME_WAIT、TCP_NODELAY...的状态或特性,你知道经常说的粘包是怎么回事吗?
客户端网络库实现真的很简单吗?,布布扣,bubuko.com
原文地址:http://blog.csdn.net/u012730075/article/details/38655195