CAsyncSocket UDP
2012-05-24 20:31
281 查看
1.重载CAsyncSocket
2.通讯过程:
3.具体连接步骤:
(1)Server、Client分别建立自己的连接Create;
(2)Client事先知道Server的Port和IP地址;Client向Server发送消息SendTo
(3)Server接受到来自某个UDP的连接(在这里为Client),获得来源Client的IP和Port;
(4)Server向来源Client发送消息。
4.小结
用CAsyncSocket 做UDP通信方式,理解起来很简单。实现起来花了点功夫。找到的资料大多是TCP通讯方式的。
5.参考资料
http://support.microsoft.com/kb/214396/
http://www.codeproject.com/Articles/16581/Sending-Receiving-UDP-Datagrams-with-MFC-s-CAsyncS
class CUDPSocket : public CAsyncSocket { public: CUDPSocket(); virtual ~CUDPSocket(); void SetParent(CDialog* pWnd); private: CDialog* m_pWnd; virtual void OnClose(int nErrorCode); virtual void OnReceive(int nErrorCode); virtual void OnSend(int nErrorCode); };
2.通讯过程:
Server | Client |
Create: m_ServerPort:指定本机的端口; SOCK_DGRAM:UDP通讯方式。 | m_ClientPort:指定本机的端口; SOCK_DGRAM:UDP通讯方式。 |
Create(m_ServerPort,SOCK_DGRAM); | Create(m_ClientPort,SOCK_DGRAM); |
Send: m_Message:指定发送信息(注意该结构体内不应含有变长数据类型,如CString) m_ClientPort:信息接受端的端口号 m_strClientIP:信息接收端的IP地址 | m_Message:指定发送信息(注意该结构体内不应含有变长数据类型,如CString) m_ServerPort:信息接受端的端口号 m_strServerIP:信息接收端的IP地址 |
int iSent = m_sDataSocket.SendTo(&m_Message,sizeof(MSGSTRUCT), m_ClientPort, m_strClientIP.GetBuffer(m_strClientIP.GetLength()+1)); | Send: int iSent = m_sDataSocket.SendTo(&m_Message,sizeof(MSGSTRUCT), m_ServerPort, m_strServerIP.GetBuffer(m_strServerIP.GetLength()+1)); |
Receive: m_Message:用来接受数据的缓存区 rSocketAddress:信息来源的IP地址 rSocketPort:信息来源的端口号 | m_Message:用来接受数据的缓存区 rSocketAddress:信息来源的IP地址 rSocketPort:信息来源的端口号 |
CString rSocketAddress; UINT rSocketPort; int iRcvd = m_sDataSocket.ReceiveFrom(&m_Message,sizeof(MSGSTRUCT), rSocketAddress, rSocketPort); | CString rSocketAddress; UINT rSocketPort; int iRcvd = m_sDataSocket.ReceiveFrom(&m_Message,sizeof(MSGSTRUCT), rSocketAddress, rSocketPort); |
3.具体连接步骤:
(1)Server、Client分别建立自己的连接Create;
(2)Client事先知道Server的Port和IP地址;Client向Server发送消息SendTo
(3)Server接受到来自某个UDP的连接(在这里为Client),获得来源Client的IP和Port;
(4)Server向来源Client发送消息。
4.小结
用CAsyncSocket 做UDP通信方式,理解起来很简单。实现起来花了点功夫。找到的资料大多是TCP通讯方式的。
5.参考资料
http://support.microsoft.com/kb/214396/
http://www.codeproject.com/Articles/16581/Sending-Receiving-UDP-Datagrams-with-MFC-s-CAsyncS
相关文章推荐
- TCP与UDP在socket编程中的区别
- 基于TCP/UDP的Socket网络通信系列之网络基础篇(一)
- SOCKET,TCP/UDP,HTTP,FTP
- Socket网络编程(二)UDP协议实现聊天工具
- UDP Socket编程 C/C++实现 (Windows Platform SDK)
- Windows下C语言的Socket编程例子(TCP和UDP)
- 如何实现基于UDP的socket的通信
- socket TCP和UDP的区别对比http://www.cnblogs.com/zengqinglei/archive/2013/04/27/3046119.html
- 网络编程--Socket、TCP/IP、UDP、Http之间的关系
- Socket网络通信理论基础搜集(TCP/IP协议栈与数据包封装+TCP与UDP的区别)
- Windows下C语言的Socket编程例子(TCP和UDP)
- 网路编程-UDP-DatagramSocket、DatagramPacket ||LocalServerSocket和LocalSocket
- Socket网络程序设计(2) ———— 基于UDP协议的客户-服务器socket实例
- Delphi用Socket IP/UDP局域网广播
- CAsyncSocket close Onclose
- Bash Shell 下打开一个TCP / UDP SOCKET
- Java基于socket服务实现UDP协议的方法
- C语言的Socket编程例子(TCP和UDP)
- Windows下C语言的Socket编程例子(TCP和UDP)
- udp socket