高手请进,提建议! 在网络通信中,首先按事先约定进行双方通信,由于消息过大, 一般分成几组发送,现在要解决的问题是把收到的消息放到内存中,如何判断一组消息完整了(包括几个消息)?哪位能提供建设性的意见,对于网络编程我想这不是一个新问题了!当然有例子就更好啦 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果是阻塞的话,用个while 循环里面用 recv,如果消息未发送完 recv应该能继续收取,如果发送完了,recv就会阻塞线程了。如果是非阻塞的,如果是消息模型,收完1组消息后还有没完的下1组来的话会继续触发下一个FD_READ消息,如果完了就不会有下一个FD_READ消息了。 在接收端准备一个足够大的缓冲区,然后在发送第一组报文的时候,将msgLen设置为总数据的长度,这样先将接收到的所有数据全部存入这个缓冲区,然后在读取msgLen,以判定本批数据的总长度,这样知道缓冲区内数据的长度>=msgLen时,便将数据一次性取出,而缓冲区后面的数据利用memmove函数向前移动 是这样的可能服务器一次向client发很多数据,这些数据组合起来大概有很多组,怎么样来管理这些数据到一定时间如果符合要求并合成它们,如何更好一些请各位兄弟聊聊 发送开始时发送一个标志信号 'start' ,全部发送完后发送结束信号'end' 可以模仿tcp协议的方法设置一个滑动窗口存储发过来的东西,如果提前不知道数据的量,应该设置一个结束标志。 tcp协议的分片给了我们一个较好的例子。可以设置1、一组是否被分开。2、设置序号。3、分片是否结束。May you succeed! 没办法。一般采用的是1、定长包发送,显然不太可行。2、自定义边界。比如说以\r\n结束,像POP3协议啦,FTP这些老协议啦一般就是这样做的。3、在包头的一个地方放上这个包的总长度或者包的一个类型,从类型判断出总长度。这在游戏和即时消息中用得最多啦,你可以用这种办法吧。 有两个文档视图类,通过菜单切换怎么解决,有源码吗?加分 CoCreateInstance()传参的问题 vc6.0使用GDI+的时候 如何保存Graphics类中的图象内容 100相送 请教下C++Builder和VC++有什么区别? 如果简历上写自己的vc的经验只有一年,找vc的工作是不是没人搭理? 郁闷! [求助]如何在单文档程序中贴图呢? SDK程序中多窗口疑问 关于vc在mapx中画点的问题 C/C++ windows编程的问题 既然看见了,那拜托就进来看看吧!~ 一个类型转换的问题?
如果提前不知道数据的量,应该设置一个结束标志。
可以设置
1、一组是否被分开。
2、设置序号。
3、分片是否结束。May you succeed!
一般采用的是
1、定长包发送,显然不太可行。
2、自定义边界。
比如说以\r\n结束,像POP3协议啦,FTP这些老协议啦一般就是这样做的。
3、在包头的一个地方放上这个包的总长度或者包的一个类型,从类型判断出总长度。这在游戏和即时消息中用得最多啦,你可以用这种办法吧。