社区
网络编程
帖子详情
CArchive::IsBufferEmpty()为什么总是TRUE值?
dxj2000yt
2004-08-31 03:38:28
与CSocketFile配合使用时,CArchive::IsBufferEmpty()为什么总是TRUE值?
即使发送端已经发送了数据也是这样,什么原因呢?
...全文
218
9
打赏
收藏
CArchive::IsBufferEmpty()为什么总是TRUE值?
与CSocketFile配合使用时,CArchive::IsBufferEmpty()为什么总是TRUE值? 即使发送端已经发送了数据也是这样,什么原因呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dxj2000yt
2004-09-04
打赏
举报
回复
To gdy119(中国制造):
你就没看我的问题!!!!!!!!!!!!!!!
:原问题------
与CSocketFile配合使用时,CArchive::IsBufferEmpty()为什么总是TRUE值?
即使发送端已经发送了数据也是这样,什么原因呢
gdy119
2004-09-02
打赏
举报
回复
没收到数据通知之前都是false,一段有数据接收到_pArchiveIn->IsBufferEmtpy()非空
因为接收的是数据流,有可能一次不能完全接收,好比recv()不能接受全部数据一样!
数据流是连续的所以可以用这个循环不停的接收!直到_pArchiveIn->IsBufferEmtpy()为
空!
gdy119
2004-09-01
打赏
举报
回复
ReceiveMsg();是虚函数,
当收到数据的通知的时候我才调用!
当然一定有数据了!
dxj2000yt
2004-09-01
打赏
举报
回复
严重同意 oldboy1234 所问,你怎能知道第一次读就有数据?
我的代码如下,可IsBufferEmpty())总是为真:
while(!m_pArchiveIn->IsBufferEmpty())
{
ReceiveMsg();// pMsg->Serialize(*m_pArchiveIn);(pMsg为你想发送的消息类)
}
oldboy1234
2004-09-01
打赏
举报
回复
OK, 如楼上所言,那么你的代码里面
do
{
ReceiveMsg();
if (m_pSocket == NULL)
return;
}
while(!m_pArchiveIn->IsBufferEmpty());
m_pArchiveIn->IsBufferEmtpy()在什么情况下会是false,这个循环的目的是什么?
oldboy1234
2004-08-31
打赏
举报
回复
楼上的,你在之前调用IsBufferEmpty,返回的就是TRUE,为什么?
gdy119
2004-08-31
打赏
举报
回复
有可能你的接收代码不对!
一般的代码如下:
初始化部分:
m_pFile = new CSocketFile(m_pSocket);
m_pArchiveIn = new CArchive(m_pFile,CArchive::load);
m_pArchiveOut = new CArchive(m_pFile,CArchive::store);
接收部分:
do
{
ReceiveMsg();
if (m_pSocket == NULL)
return;
}
while(!m_pArchiveIn->IsBufferEmpty());
发送部分:
TRY
{
pMsg->Serialize(*m_pArchiveOut);(pMsg为你想发送定义的消息类)
m_pArchiveOut->Flush();
}
CATCH(CFileException, e)
{
m_pArchiveOut->Abort();
Disconnect();
}
END_CATCH
oldboy1234
2004-08-31
打赏
举报
回复
帮顶
名牌大灰狼
2004-08-31
打赏
举报
回复
CSocketFile,CArchive都只是CSocket的上层封装,为了我们编程更简单而已
VC6的MSDN附带的例子程序(比如SAMPLES\VC98\MFC\ADVANCED\CHATSRVR),
CA
rc
hive
详解
CA
rc
hive
没有基类。
CA
rc
hive
允许以一个永久二进制(通常为磁盘存储)的形式保存一个对象的复杂网络,它可以在对象被删除时,还能永久保存。可以从永久存储中装载对象,在内存中重新构造它们。使得数据永久保留的过程就叫作“串行化”。 可以把一个归档对象看作一种二进制流。象输入/输出流一样,归档与文件有关并允许写缓冲区以及从硬盘读出或读入数据。输入/输出流处理一系列ASCII字符,但是归
CA
rc
hive
详解
================================本文转自============================== http://hi.baidu.com/tanchunhai/blog/item/74ac17df9b0d521062279801.html
CA
rc
hive
没有基类。
CA
rc
hive
允许以一个永久二进制(通常为磁盘存储)的形式保存一个对象的复杂网络
SOCKET类的设计和实现
2001年08月24日 16:00:00 SOCKET类的设计和实现 WinSock基本知识 这里不打算系统地介绍socket或者WinSock的知识。首先介绍WinSock API函数,讲解阻塞/非阻塞的概念;然后介绍socket的使用。WinSock API Socket接口是网络编程(通常是TCP/IP协议,也可以是其他协议)的API。最早的Socket接口是Berkeley接口,在
使用CSocket、CSocketFile及
CA
rc
hive
组合接收不到数据的一种原因
这几天在做网络编程,发现一个问题 客户端使用CSocket、CSocketFile及
CA
rc
hive
组合, 关键代码如下: void CClientSock::init(CClientDlg* pdlgClient) { m_pdlgClient=pdlgClient; m_psockFile=new CSocketFile(this,
TRUE
); m_parInput=new
CA
MFC中的
CA
rc
hive
(1)
1.先贴上该类: class
CA
rc
hive
{ protected: enum SchemaMapReservedRefs { objTypeArrayRef = 1 }; enum LoadArrayObjType{ typeUndefined = 0, typeCRuntimeClass = 1, typeCObject = 2 }; public: // Flag
网络编程
18,357
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章