请教各位高人:我用CAsyncSocket类实现不同IP之间的UDP数据收发。主要代码如下:
class CMySocket : public CAsyncSocket
void CMySocket::OnReceive(int nErrorCode)rSocketAddress
{
// 接收IP地址为rSocketAddress、端口号为rSocketPort发送的数据;
int nRcvNum=ReceiveFrom(receive,MAXBUFFERSIZE,rSocketAddress,rSocketPort);}void CNetView::OnInitialUpdate()
{
CMySocket m_Socket;
if(AfxSocketInit(NULL)==FALSE)
{
AfxMessageBox(_T("Failed to initail file client socket."));
}
long lEvent=FD_READ | FD_WRITE | FD_OOB | FD_CONNECT | FD_CLOSE; m_Socket.Create(m_nLocalPort,SOCK_DGRAM,lEvent);
unsigned char a[2]={0};
int m_nLocalPort;
CString ServerAddress;
// 向IP地址为ServerAddress、端口号为m_nLocalPort发送UDP数据;
m_Socket.SendTo(a,2, m_nLocalPort, ServerAddress);
} 主要的用于收发的两个语句已经注释出来。现在问题是,当收发的IP地址相同时候,每当我向对方发送一个数据后,对方发过来的数据就编程乱码。如果我不向对方发送数据,则接收到对方的数据就是正常的。请教各位高人,难道收发端的IP都不能一样吗,还是程序还存在什么其他问题?还请各位高人指点。
class CMySocket : public CAsyncSocket
void CMySocket::OnReceive(int nErrorCode)rSocketAddress
{
// 接收IP地址为rSocketAddress、端口号为rSocketPort发送的数据;
int nRcvNum=ReceiveFrom(receive,MAXBUFFERSIZE,rSocketAddress,rSocketPort);}void CNetView::OnInitialUpdate()
{
CMySocket m_Socket;
if(AfxSocketInit(NULL)==FALSE)
{
AfxMessageBox(_T("Failed to initail file client socket."));
}
long lEvent=FD_READ | FD_WRITE | FD_OOB | FD_CONNECT | FD_CLOSE; m_Socket.Create(m_nLocalPort,SOCK_DGRAM,lEvent);
unsigned char a[2]={0};
int m_nLocalPort;
CString ServerAddress;
// 向IP地址为ServerAddress、端口号为m_nLocalPort发送UDP数据;
m_Socket.SendTo(a,2, m_nLocalPort, ServerAddress);
} 主要的用于收发的两个语句已经注释出来。现在问题是,当收发的IP地址相同时候,每当我向对方发送一个数据后,对方发过来的数据就编程乱码。如果我不向对方发送数据,则接收到对方的数据就是正常的。请教各位高人,难道收发端的IP都不能一样吗,还是程序还存在什么其他问题?还请各位高人指点。
memset初始化缓冲区。
这里 “对方发过来的数据就编程乱码”的代码呢?
贴出来look一下
http://www.codeproject.com/KB/IP/ChatAppAsynchUDPSocks.aspx