使用CSocket、CSocketFile及CArchive组合接收不到数据的一种原因
来源:互联网 发布:手机淘宝4.0.1 编辑:程序博客网 时间:2024/05/22 01:39
这几天在做网络编程,发现一个问题
客户端使用CSocket、CSocketFile及CArchive组合,
关键代码如下:
void CClientSock::init(CClientDlg* pdlgClient)
{
m_pdlgClient=pdlgClient;
m_psockFile=new CSocketFile(this,TRUE);
m_parInput=new CArchive(m_psockFile,CArchive::load);//外部传输到本机的数据,可从套接字中读出数据,
m_parOutput=new CArchive(m_psockFile,CArchive::store);//传输至套接字数据,从套接字中写入数据,
//m_bIsInit=TRUE;//初始化成功
}
void CClientSock::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
CSocket::OnReceive(nErrorCode);
CString msg;
CString recvStr;
do
{
(*m_parInput)>>msg;
recvStr+=msg;
} while (m_parInput->IsBufferEmpty());
//AfxMessageBox(recvStr,MB_OK);
}
代码中(*m_parInput)>>msg这句在服务器端发送数据时,一直卡着,无法执行下去,但是用CSocket中的成员函数recvive是可正常接收数据的。
经过各种折腾,最终发现:
1、客户端与服务器端都用CSocket、CSocketFile及CArchive组合时发送接收数据时,通信可以正常收发数据
2、服务器直接调用成员函数send()发送数据,而客户端用CSocket、CSocketFile及CArchive组合接收数据时,就会在receive处卡主,执行不下去。
希望对玩CSocket的同志有用。
- 使用CSocket、CSocketFile及CArchive组合接收不到数据的一种原因
- MFC CSocket 和 CSocketFile的使用
- 【项目】MFC下TCP/IP的套接字编程中CSocket,CSocketfile与CArchive类
- csocket的多线程接收数据
- CArchive使用的一种错误方式
- Android接收不到系统广播的原因
- struts2 参数接收不到的原因
- android 开机广播接收不到的原因
- Linux串口通信中一种接收不到数据的问题的解决
- Linux串口通信中一种接收不到数据的问题的解决
- 管道方式收不到数据(ReadBytes返回的数组为null)的一种原因
- 使用ognl向后台输出域模型值接收不到的原因
- erlang异步接收不到数据的问题
- 在mrc下,NSNotificationCenter接收不到通知的一种情况
- CArchive类的使用
- CArchive的对象使用
- CArchive的使用
- 应用程序接收不到BOOT_COMPLETED消息的原因总结
- log4j和其他日志框架桥接图
- java swap
- 什么是矢径
- Android 标签数字自定义控件
- Codeforces 742B Arpa’s obvious problem and Mehrdad’s terrible solution
- 使用CSocket、CSocketFile及CArchive组合接收不到数据的一种原因
- chrome 浏览器主页被 360 篡改解决办法
- 通过Github与PM2部署Node应用
- 基于Jtopo的网络拓扑编辑器初探
- 解决ES数据偏移问题
- 一句代码检测app新版本
- Intent传值新技能
- Java CountDownLatch
- websphere重启方法