代码如下:
MsgPacket msgPacket;
strcpy(msgPacket.Head.msgid,"0001");
strcpy(msgPacket.Head.length,"0274");
strcpy(msgPacket.Head.seq,"");
strcpy(msgPacket.Msg.phone,"12345678912");
strcpy(msgPacket.Msg.icpno,"123456");
strcpy(msgPacket.Msg.msg,"MGDQZDSAAle");
strcpy(msgPacket.Msg.reserved,"");
if (send(ServerSocket,(char *)&msgPacket,sizeof(msgPacket),0)!= SOCKET_ERROR)
{
AfxMessageBox("发送成功");
}
else
{
AfxMessageBox("发送失败");
}
执行这段代码时.总提示:"0x006322bf 处未处理的异常: 0xC0000005: 读取位置 0x00000001 时发生访问冲突"
是什么原因啊....但发送其它的结构就没问题
MsgPacket msgPacket;
strcpy(msgPacket.Head.msgid,"0001");
strcpy(msgPacket.Head.length,"0274");
strcpy(msgPacket.Head.seq,"");
strcpy(msgPacket.Msg.phone,"12345678912");
strcpy(msgPacket.Msg.icpno,"123456");
strcpy(msgPacket.Msg.msg,"MGDQZDSAAle");
strcpy(msgPacket.Msg.reserved,"");
if (send(ServerSocket,(char *)&msgPacket,sizeof(msgPacket),0)!= SOCKET_ERROR)
{
AfxMessageBox("发送成功");
}
else
{
AfxMessageBox("发送失败");
}
执行这段代码时.总提示:"0x006322bf 处未处理的异常: 0xC0000005: 读取位置 0x00000001 时发生访问冲突"
是什么原因啊....但发送其它的结构就没问题
{
PacketHead Head;
PacketMsg Msg;
};
struct PacketMsg
{
char icpno[20];
char phone[20];
char msg[200];
char reserved[8];
};
struct PacketHead
{
char length[8];
char msgid[8];
char seq[10];
};
如果是阻塞的话,从这段代码看不出问题,建议使用try ... catch,看看具体出在哪一段代码。
//加上串结束符
strcpy(msgPacket.Head.msgid,"0001\0");
strcpy(msgPacket.Head.length,"0274\0");
strcpy(msgPacket.Head.seq,"\0");
strcpy(msgPacket.Msg.phone,"12345678912\0");
strcpy(msgPacket.Msg.icpno,"123456\0");
strcpy(msgPacket.Msg.msg,"MGDQZDSAAle\0");
strcpy(msgPacket.Msg.reserved,"\0");
int SentCount = 0;
while(1)
{
int SendRet = send(ServerSocket,(char *)((int)&msgPacket+SentCount),sizeof(msgPacket)-SentCount,0);
if (SendRet != SOCKET_ERROR)
{
if (SendRet == 0)//网络断开
{
AfxMessageBox("网络断开!");
break;
}
SentCount += SendRet;//拷贝到缓冲区成功
if (SentCount == sizeof(msgPacket))//发送完毕
{
AfxMessageBox("发送成功");
break;
}
}
else
{
if(WSAWOULDBLOCK != WSAGetLastError())//WSAWOULDBLOCK表示待发送缓冲区已满
{
AfxMessageBox("发送失败");
break;
}
}
}
不过谢谢 unsigned ..
你试一下.