The_facE 2009年12月22日
第一次接通讯服务器的任务,设计上有点问题,有经验的前辈给个建议
通讯服务器,客户端发送申请,服务器处理数据然后回复。服务器端程序需要重构。
Select模型,但不是select->accept->recv方式,而是accept->select->recv(这个是不能更改的,我们头儿这么要求的)。

有的报文会有一个很长而并不需要处理的头信息,有的没有,而且整个报文数据部分的长度保存在报文的前几十个字节中(不算那个很长的无用报文头),现在我不决的是:
1.将一个报文分多次recv,比如:先recv一小段信息,处理有无用报文头的情况,然后再recv一段,判断报文数据长度,最后再一次recv完成。
2.一次recv一个可能的最大长度,然后再处理报文。

哪种方式会比较好?

另:经常发生select通过而recv到0的情况,不知道为什么?基本可以确定不是客户端断开连接,因为旧的服务器程序从不发生这种现象。
...全文
106 点赞 收藏 9
写回复
9 条回复

还没有回复,快来抢沙发~

发动态
发帖子
网络编程
创建于2007-09-28

7878

社区成员

6.4w+

社区内容

VC/MFC 网络编程
社区公告
暂无公告