举例来说比如<我叫mt>,这游戏刚出来的时候,因为人多服务器很拥挤,登录时候经常是卡在"与服务器通信中..",那时候我想它应该是没有重发包功能,因为不光是登录,游戏里所有动作和界面操作都是这样,一旦卡住就无解,必须重启游戏,用户体验很差。后来大概是代码改进过了,加了重发包功能,虽然有时候也会卡,但"与服务器通信中.."这个框过一会儿会消失,动作会执行成功。我想问的是,各位有没碰到过这种情况,又是如何设计自己的代码的,或者有没现成的网络库什么的已经考虑到这点了,等等。举例,如果tcp服务器192.168.1.1,监听8080端口,一旦接收到 "A" 就返回输出一个 "B", 我设计客户端代码时候:
int main() {
tcp x("192.168.1.1", 8080);
x.connect(); //连接可能失败,失败的话需要重试
x.send("a"); //发送可能失败,失败的话需要重新send,但不需要重新connect
h.recv(); //接收可能失败,失败的话需要重新recv,但不需要重新connect/send
}这个重做的概念不限于网络编程,我想也许可以抽象出一个 do_something_and_retry_on_fail 之类通用的东西,但简单想了下 觉得比较复杂。请提宝贵建议,谢谢。