CAsyncSocket的Receive可以接收
如:Receive(buf,size,0);
这个的size可能是1000,但是Receive返回值有可能没接收到1000这么多。
---------------------------------------------------------------------
那CAsyncSocket的Send呢?
Send(buf,size,0);
这个的size是1000,那Send的返回值,也就是发出的长度一定是1000吗?
前题是buf一定大于1000这个长度。
----------------------------------------------------------------------
是否可以细说说。谢谢了。很急。
如:Receive(buf,size,0);
这个的size可能是1000,但是Receive返回值有可能没接收到1000这么多。
---------------------------------------------------------------------
那CAsyncSocket的Send呢?
Send(buf,size,0);
这个的size是1000,那Send的返回值,也就是发出的长度一定是1000吗?
前题是buf一定大于1000这个长度。
----------------------------------------------------------------------
是否可以细说说。谢谢了。很急。
解决方案 »
- 在一个可停靠子窗口中动态创建CButton后为DISABLE状态
- 怎样用消息关闭一个模态对话框啊?
- 字符串截取显示?
- VS2005编译时会输出所有信息,如何象VC6那样只显示错误信息
- 请问如何给文字加黑框,谢谢!!!
- 谁知道怎样CVS到sourceforge.net的项目?
- 有谁做过GPS数据下载的软件???
- 如何在MFC中使用CDatabase和CRecordset时,设置查询返回的行数??有正文
- 关于winsock中accept和select I/O模型的问题
- time(小问题,散分)
- 简单问题:使用的是晚绑定方式,为什么调用服务器方法时却说没有“找不到成员”?
- 怎样创建一个基于对话框的运行时隐藏界面?
不会产生小于1000的时候吗?
谢谢各位。
谢谢。很急
Send的返回值总是<= size,不可能大于它
呵呵,如果你缓冲区只有1000,你怎么会一次发送大于它的东西,发送数据是要先把数据放在缓冲区上的
see MSDN Sample:
// CMyAsyncSocket is derived from CAsyncSocket and defines the
// following variables:
// CString m_sendBuffer; //for async send
// int m_nBytesSent;
// int m_nBytesBufferSize;void CMyAsyncSocket ::OnSend(int nErrorCode)
{
while (m_nBytesSent < m_nBytesBufferSize)
{
int dwBytes; if ((dwBytes = Send((LPCTSTR)m_sendBuffer + m_nBytesSent,
m_nBytesBufferSize - m_nBytesSent)) == SOCKET_ERROR)
{
if (GetLastError() == WSAEWOULDBLOCK) break;
else
{
TCHAR szError[256];
wsprintf(szError, "Server Socket failed to send: %d",
GetLastError());
Close();
AfxMessageBox (szError);
}
}
else
{
m_nBytesSent += dwBytes;
}
}
if (m_nBytesSent == m_nBytesBufferSize)
{
m_nBytesSent = m_nBytesBufferSize = 0;
m_sendBuffer = "";
}
CAsyncSocket::OnSend(nErrorCode);
}
if (dwBytes>=0) 就是每次send的字节数
if (dwBytes = -1)就有错误(除WSAEWOULDBLOCK 发送缓冲满)