社区
网络编程
帖子详情
请教关于CSocket接受数据的问题,如果发送的数据有100K,,那么接受端的程序应该怎么写??
Ge
2003-12-10 10:36:41
是很现实的一个问题,那位高人,花点时间帮我解决一下,感激不尽。。。
我即使设置足够大的缓冲,也只能收到8640bit,,
...全文
82
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
打赏
举报
回复
分包发送和接收.
SendMessage重入
问题
。
本文探讨了使用C
Socket
进行多线程编程时遇到的
问题
,特别是在高并发环境下出现的丢包现象。作者详细分析了
问题
根源在于SendMessage函数的重入特性导致的客户端缓冲区覆盖,并给出了相应的解决办法。
Network Thread
该博客围绕VC编程展开,涉及网络编程、多线程和DLL等方面的诸多
问题
。如网络编程中IXMLHTTPRequest使用、文件下载、网页表单提交等;多线程里C
Socket
类使用、线程消息处理等;DLL方面有DLL调用、线程创建等
问题
,还包含IIS操作、进程监控等内容。
完成端口服务器中转两个客户端之间的通信(二)
本文介绍了一种基于完成端口的服务器设计思路,利用逻辑线程和消息队列实现客户端间的
数据
转发。服务器端采用AcceptEx接收客户端连接,并通过WSARecv/WSASend进行
数据
收发。
Win32下的录音编程
本文介绍使用Win32APIs进行录音编程的基本过程和技术细节,包括打开和配置录音设备、处理音频
数据
及关闭设备等内容。
c++面试题(网络通信篇)
本文详细对比了TCP和UDP这两种传输层协议的特点与应用场景,解析了TCP三次握手的过程及其必要性,并介绍了TCP报文格式及可靠性保证机制。同时,还探讨了HTTP请求方式的区别及其状态码含义。
网络编程
18,356
社区成员
64,164
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章