MFC 使用UDP协议进行数据传输 本人qq942331295

AmoyCHC 2012-12-16 03:57:23
软件采用UDP协议进行数据传输,但是只能一端发送一端接收,反过来就不行;能够发送就说明是可以进行通信的,但是又不知道为什么只能单向通信,跪求大神解答啊
具体代码如下:
//连接网络
void CAtosCHCDlg::OnNetSendButton()
{
// TODO: Add your control notification handler code here
if (NULL != m_pSocket)
{
m_pSocket->Close();
delete m_pSocket;
m_pSocket = NULL;
}

if (!m_bIsConnected)
{
m_bIsConnected = TRUE;

UpdateData(TRUE);

BYTE field[4];

m_RemoteIp.GetAddress(field[0], field[1], field[2], field[3]);

m_strPeerIPaddr.Format(TEXT("%d.%d.%d.%d"),
field[0], field[1], field[2], field[3]);

m_pSocket = new CUdpSocket();
m_pSocket->Create(m_LocalNum, SOCK_DGRAM);
m_pSocket->Bind(m_RemoteNum, m_strPeerIPaddr);

GetDlgItem(IDC_NET_SEND_BUTTON)->SetWindowText(TEXT("断开连接"));
}
else
{
m_bIsConnected = FALSE;
GetDlgItem(IDC_NET_SEND_BUTTON)->SetWindowText(TEXT("建立连接"));
}


}
发送代码:
CString dataToSend ;//= m_strRecieve;

if (NULL == m_pSocket || !m_bIsConnected)
{
AfxMessageBox(TEXT("尚未打开端口!"));
//return;
}
dataToSend = "测试数据";
m_pSocket->SendTo(dataToSend, dataToSend.GetLength(),m_RemoteNum,m_strPeerIPaddr);

接收代码:
void CUdpSocket::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class

TCHAR recBuf[1024];
int len = sizeof(SOCKADDR_IN);

ZeroMemory(recBuf, sizeof(recBuf));

int recBytes = ReceiveFrom(recBuf, 1023, (SOCKADDR*)&m_clientAddr, &len, 0);

if (0 == recBytes)
{
AfxMessageBox(TEXT("UDP连接已经关闭!"));
}
else if (SOCKET_ERROR == recBytes)
{
AfxMessageBox(TEXT("接受数据失败!"));
}
else
{
CString strBuf;
strBuf.Format(TEXT("收到数据: %s"), recBuf);
AfxMessageBox(strBuf, MB_OK);
}

CSocket::OnReceive(nErrorCode);
}
...全文
185 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
laqhelen 2012-12-16
  • 打赏
  • 举报
回复
这里有很多socket例子,找一个测试一下: http://download.csdn.net/detail/geoff08zhang/4571358
hurryboylqs 2012-12-16
  • 打赏
  • 举报
回复
什么叫做反过来不行?不知所云啊

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧