1. 把CUDP文件拷到工程目录。添加到工程。
2. 包含头文件 #include "CUDP.h"
3. 创建变量对象。 CUDP theUDP;
4. 初始化 , 假如打开UDP端口100,消息接收窗口为m_hWnd
if ( NULL != theUDP.Create(this->m_hWnd,100))
{
MessageBox(0,"UDP 打开失败","错误",0);
return 0;
}
如果没有消息接收窗口,可以使用回调函数,请参考第7条
5. 发送字符串 theUDP.Send("192.168.1.29",101,"Hello World.");
发送数据 BYTE pBuffer[128];
memset(pBuffer,0,128);
theUDP.Send("192.168.1.29",101,pBuffer,128);
6. 接收响应子函数:afx_msg LRESULT OnRevUdp(WPARAM IPInfo,LPARAM pRecvBuf);
消息映射: ON_MESSAGE(WM_RECVDATA,OnRevUdp)
消息响应:
LRESULT CUDP_ServerDlg::OnRevUdp(WPARAM IPInfo,LPARAM pRecvBuf)
{
if (pRecvBuf == NULL) return NULL;
// pRecvBuf里存放是收到的数据
// IPInfo里面存放是通信双方信息及接收数据大小
// int iLength = CUDP::GetBufferLength(IPInfo);//接收数据大小
// int FromPort = CUDP::GetSourcePort(IPInfo);//发送方端口号
// int ToPort = CUDP::GetToPort(IPInfo);//接收方端口号
// CString csIPAddr = CUDP::GetSourceIP(IPInfo));//对方IP地址
// CString csMacAddr = CUDP::GetSourceMAC(csIPAddr));//对方MAC地址
// 你的代码。。。
return NULL;
}
//////////////////////////////////////////////////////////////////////////////////////////////
7.使用回调函数接收数据,当收到数据后,会自动调用该函数:
初始化的时候,改用 theUDP.Create(NULL, 100, &UDPRev);
LRESULT UDPRev(DWORD *IPInfo,BYTE *pRecvBuf)
{
OutputDebugString("\n\n收到数据:来自");
OutputDebugString(CUDP::GetSourceIP(IPInfo));
int iFrom = CUDP::GetSourcePort(IPInfo); CUDP::LogTrace(":%d\n",iFrom);
int iMyPort = CUDP::GetToPort(IPInfo); CUDP::LogTrace("ToPort:%d\n",iMyPort);
int iLen = CUDP::GetBufferLength(IPInfo); CUDP::LogTrace("RevBytes:%d\n",iLen);
for (int i=0;i<iLen;i++)
{
CUDP::LogTrace("%02X ",pRecvBuf[i]);
}
OutputDebugString("\n");
OutputDebugString((LPCSTR)pRecvBuf);
return 0;
}
- 1
- 2
前往页