不懂就问之这个socket发送的字节数为什么是零?
看如下代码:
typedef struct _MessageData
{
CString m_Name;
CString m_UserIp;
CString m_ServerIp;
UINT m_Port;
UINT m_Length;
CString m_MessageType;
CString m_MessageBody;
}MESSAGEDATA,*LPMESSAGEDATA;
class CMessageSocket : public CSocket
{...}
BOOL SenMessage(CMessageSocket * lpsock,LPMESSAGEDATA lpmessage);
CMessageSocket * m_MessageSocket;
MESSAGEDATA m_MessageData;
//此处对m_MessageData赋值
m_MessageData.m_Name=m_User.m_Name;
m_MessageData.m_UserIp=m_User.m_Ip;
m_MessageData.m_ServerIp=OnlineDlg.m_ServerIp;
m_MessageData.m_Port=6000;
m_MessageData.m_Length=sizeof(MESSAGEDATA);
m_MessageData.m_MessageType="ONLINE";
m_MessageData.m_MessageBody=m_User.m_Passward;
...
m_MessageSocket=new CMessageSocket;
if(!m_MessageSocket->Create(6000,SOCK_DGRAM,NULL))
{
delete m_MessageSocket;
m_MessageSocket=NULL;
AfxMessageBox("生成用户信息交互Socket出错");
return ;
}
SenMessage(m_MessageSocket,&m_MessageData);
...
BOOL SenMessage(CMessageSocket *lpsock, LPMESSAGEDATA lpmessage)
{
int byteAll;
int byteSent;
int sendingSize;
byteSent = 0;
byteAll = lpmessage->m_Length;
while(byteSent < byteAll)
{
if(!lpsock->Connect(lpmessage->m_ServerIp,5000))
{
delete lpsock;
AfxMessageBox("和服务器进行音频服务连接时出错");
return false;
}
//为什么在下一句里的sendingsize总是零?
if(sendingSize=(int)lpsock->Send((char *) lpmessage,sizeof(MESSAGEDATA),0)
== SOCKET_ERROR)
{
AfxMessageBox("发送用户信息出错");
return FALSE;
}
byteSent += sendingSize;
}
return true;
}