18,363
社区成员




int nSendSize = 0;
while (TRUE)
{
//如果需要发送的大小为0 ,退出
if (m_PacketProtocal.sSendBufferInfo.nPacketLen-m_PacketProtocal.sSendBufferInfo.nSendLen == 0)
return;
nSendSize = send(hSocket,m_PacketProtocal.pSendBuffer+m_PacketProtocal.sSendBufferInfo.nSendLen,m_PacketProtocal.sSendBufferInfo.nPacketLen-m_PacketProtocal.sSendBufferInfo.nSendLen,0);
if (nSendSize > 0)
{
m_PacketProtocal.sSendBufferInfo.nSendLen += nSendSize;
//如果全部发送完退出
if (m_PacketProtocal.sSendBufferInfo.nSendLen == m_PacketProtocal.sSendBufferInfo.nPacketLen)
{
m_PacketProtocal.sSendBufferInfo.nSendLen = 0;
m_PacketProtocal.sSendBufferInfo.nPacketLen=0;
return;
}
}
else
if (nSendSize == 0 )
{
if (m_nShowTestInfo) // For Test
{
memset(pTest,0,250);
sprintf(pTest,"send buffer 发送0字节 \r\n");
m_ErrorLog.WriteInfo(pTest);
}
return;
}
else if (nSendSize == SOCKET_ERROR)
{
int nErrorCode = WSAGetLastError();
switch(nErrorCode)
{
case WSAEWOULDBLOCK:
PostMessage(m_hWnd,WM_WRITEMSG,2,0);
m_strInfoMsg.Format("发送SendBuffer动作出现阻塞,错误信息:%d",WSAGetLastError());
WriteLog("文件传输",m_strInfoMsg,"失败");
break;
case WSAETIMEDOUT:
m_strInfoMsg.Format("发送SendBuffer出现超时错误,错误信息:%d",WSAGetLastError());
WriteLog("文件传输",m_strInfoMsg,"失败");
break;
default:
m_strInfoMsg.Format("发送SendBuffer出现错误,错误信息:%d",nErrorCode);
WriteLog("文件传输",m_strInfoMsg,"失败");
return;
}
}
}