社区
网络编程
帖子详情
请教关于CSocket接受数据的问题,如果发送的数据有100K,,那么接受端的程序应该怎么写??
Ge
2003-12-10 10:36:41
是很现实的一个问题,那位高人,花点时间帮我解决一下,感激不尽。。。
我即使设置足够大的缓冲,也只能收到8640bit,,
...全文
55
7
打赏
收藏
请教关于CSocket接受数据的问题,如果发送的数据有100K,,那么接受端的程序应该怎么写??
是很现实的一个问题,那位高人,花点时间帮我解决一下,感激不尽。。。 我即使设置足够大的缓冲,也只能收到8640bit,,
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Healer
2003-12-14
打赏
举报
回复
阻塞不好...
vcar
2003-12-13
打赏
举报
回复
对于数据量大的时候,是用非阻塞方式会等待很长的时间,而且函数不会返回。
Ge
2003-12-13
打赏
举报
回复
非常感激还有个问题,socket中的阻塞机制是怎么样的啊,
smallfool
2003-12-10
打赏
举报
回复
循环接收。
BOOL CHSPacket::ReadBody(CHSConnection *pConnection)
{
ASSERT(pConnection);
CHSSocket *pSocket = pConnection->GetSocket();
ASSERT(pSocket);
if ( m_nLength > 0 && m_PacketStatus >= PS_READHEADEROK )
{
if ( m_pData == NULL )
{
try
{
m_pData = new TCHAR[m_nLength];
// 清 0
ZeroMemory(m_pData, m_nLength);
m_nBytesRead = 0;
m_PacketStatus = PS_READINGBODY;
}
catch (CMemoryException *e)
{
e->ReportError();
e->Delete();
return FALSE;
}
}
ASSERT(m_pData);
int nBytesRead = pSocket->Receive(m_pData + m_nBytesRead, m_nLength - m_nBytesRead);
if ( SOCKET_ERROR == nBytesRead )
{
if (WSAEWOULDBLOCK == pSocket->GetLastError())
{
// 继续进行接收
pSocket->AsyncSelect( FD_READ );
}
return FALSE;
}
m_nBytesRead += nBytesRead;
if ( m_nBytesRead < m_nLength )
{
pSocket->AsyncSelect( FD_READ );
return FALSE;
}
m_PacketStatus = PS_READBODYOK;
}
return TRUE;
}
sumkeen
2003-12-10
打赏
举报
回复
你不要指望一次收到所有的数据。
最好是分次接受,并且将每次接收的数据量垒加。
如果最后的接收数据量记数等于要接收的,那么肯定不会错了。
如:
nTotalReceive=0;
do
{
nReceive=m_socket.Receive(m_srcBuffer+nTotalReceive,1024);
nTotalReceive+=nReceive;
}
while(nTotalReceive<nTotal && nReceive>0)
ISunwu
2003-12-10
打赏
举报
回复
循环接收,知道收够为止.
fuxf
2003-12-10
打赏
举报
回复
分包发送和接收.
CSocket
发送
接受
长文件的例子
一个关于
CSocket
发送
接受
长文件的例子
CSocket
类
数据
接收存在的
问题
及Win32函数解决办法
CSocket
类
数据
接收存在的
问题
及Win32函数解决办法
CSocket
通信源
程序
备份.rar
我就是照着里面的一个说明文档建立并且调试通过的一个源
程序
。文档的开头如下: 有需要的就看看。 忘了说明了,里面用的测试IP是公用的那个 ...一、服务器
端
应用
程序
设计(工程名称SocSvr) 1.1、界面及各控件属性
基于
CSocket
的GPRS
数据
中心
程序
使用VC开发的基于
CSocket
的GPRS
数据
中心
程序
,能够实现对gprs终
端
发送
数据
的采集,使服务器与终
端
实现socket连接通讯。
通过
CSocket
、CArchive实现Client
端
和Server
端
互发
数据
VC6.0下的基于
CSocket
的Server
端
和Client
端
的互相通信
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章