问一个基础的问题:CSocket::Send( const void* lpBuf, int nBufLen, int nFlags = 0 );是不是保证返回值是 nBufLen 呢??派生类呢??
如题!!
解决方案 »
- MFC 中每秒钟去刷新一下按钮上的位图,会出现内存泄漏吗?
- 闪烁光标--------------插入符
- 在a.h和a.cpp中引用b.h有什么区别没
- 怎么把一个dll和exe弄成一个没有界面安装的exe,自动拷贝到系统目录下注册运行?
- 【求助】如何改变任意对话框的背景色?
- 关于Singleton模式和控件的问题!
- 愿意在csdn里交朋友的,来这里聚会,都留个联系方式!!!!!!!!!!!!!!!!!!!
- 95的机器怎样打上oleacc.dll的补丁
- 一个关于Com组件的简单问题
- 在VC 中如何将DBGird Control与Data Source邦定!
- MFC 有提供类支持 FTP 继传吗?
- *.wdl的文件用什么软件看啊
也只可能等于nBufLen .
如,你发送1M数据,调用Send可能返回只几百K,你需要再次调用Send发送剩下的数据。
一般都是用while循环发送数据。
char data[];
...
int nSended = 0;
int nTotalSended = 0;
int nBufLen = sizeof(data);
while (nTotalSended < nBufLen)
{
nSended = pSocket->Send(data[nTotalSended] , nBufLen - nTotalSended);
nTotalSended += nSended;
}
...
int nSended = 0;
int nTotalSended = 0;
int nBufLen = sizeof(data);
while (nTotalSended < nBufLen)
{
nSended = pSocket->Send(data[nTotalSended] , nBufLen - nTotalSended);
if (nSended >= 0)
nTotalSended += nSended;
else
break;
}