下载本文所附源代码 程序运行效果截图: ![]() |
WinSock提供了对UDP(用户数据报协议)的支持,通过UDP协议我们可以向指定IP地址的主机发送数据,同时也可以从指定IP地址的主机接收数据,发送和接收方处于相同的地位没有主次之分。利用CSocket操纵无连接的数据发送很简单,首先生成一个本地套接口(需要指明SOCK_DGRAM标记),然后利用 int CAsyncSocket::SendTo( const void* lpBuf, int nBufLen, UINT nHostPort, LPCTSTR lpszHostAddress = NULL, int nFlags = 0 )发送数据, int CAsyncSocket::ReceiveFrom( void* lpBuf, int nBufLen, CString& rSocketAddress, UINT& rSocketPort, int nFlags = 0 )接收数据。函数调用顺序如图。 利用UDP协议发送和接收都可以是双向的,就是说任何一个主机都可以发送和接收数据。但是UDP协议是无连接的,所以发送的数据不一定能被接收,此外接收的顺序也有可能与发送顺序不一致。下面是相关代码: /* 发送方在端口6800上向接收方端口6801发送数据 */ //发送方代码: BOOL CMy62_s1_clientDlg::OnInitDialog() { CDialog::OnInitDialog(); //创建本地套接口 m_sockSend.Create(6800,SOCK_DGRAM,NULL); //绑定本地套接口 m_sockSend.Bind(6800,”127.0.0.1″); //创建一个定时器定时发送 SetTimer(1,3000,NULL); … } void CMy62_s1_clientDlg::OnTimer(UINT nIDEvent) { static iIndex=0; char szSend[20]; sprintf(szSend,”%010d”,iIndex++); //发送UDP数据 int iSend= m_sockSend.SendTo(szSend,10,6801,”127.0.0.1″,0); TRACE(“sent %d byte\n”,iSend); … } //接收方代码 BOOL CMy62_s1_serverDlg::OnInitDialog() { CDialog::OnInitDialog(); //创建本地套接口 m_sockRecv.Create(6801,SOCK_DGRAM,”127.0.0.1″); //绑定本地套接口 m_sockRecv.Bind(6801,”127.0.0.1″); //创建一个定时器定时读取 SetTimer(1,3000,NULL); … } void CMy62_s1_serverDlg::OnTimer(UINT nIDEvent) { char szRecv[20]; CString szIP(“127.0.0.1″); UINT uPort=6800; //接收UDP数据 int iRecv =m_sockRecv.ReceiveFrom(szRecv,10,szIP,uPort,0); TRACE(“received %d byte\n”,iRecv); … } /* 接收方采用同步读取数据的方式,所以没有读到数据函数调用将不会返回 */ |
-
近期文章
近期评论
- coolker 发表在《打造最快的Hash表》
- struggle 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- diys 发表在《C语言编程宝典(王大刚) 1.1 C 语言的产生与发展》
文章归档
- 2022 年十月
- 2014 年一月
- 2013 年十二月
- 2012 年十一月
- 2012 年七月
- 2012 年六月
- 2012 年五月
- 2012 年四月
- 2012 年三月
- 2012 年二月
- 2011 年十二月
- 2011 年十月
- 2011 年九月
- 2011 年八月
- 2011 年七月
- 2011 年六月
- 2011 年五月
- 2011 年四月
- 2011 年三月
- 2011 年二月
- 2011 年一月
- 2010 年十二月
- 2010 年十一月
- 2010 年十月
- 2010 年九月
- 2010 年八月
- 2010 年七月
- 2010 年六月
- 2010 年五月
- 2010 年四月
- 2010 年三月
- 2010 年二月
- 2010 年一月
- 2009 年十二月
- 2009 年十一月
- 2009 年十月
- 2009 年九月
- 2009 年八月
- 2009 年七月
- 2009 年六月
- 2009 年五月
- 2009 年四月
- 2009 年三月
- 2009 年二月
- 2009 年一月
- 2008 年十二月
- 2008 年十一月
- 2008 年十月
- 2008 年九月
- 2008 年八月
- 2008 年七月
- 2008 年六月
- 2008 年五月
- 2008 年四月
- 2008 年三月
- 2008 年二月
- 2008 年一月
- 2007 年十二月
- 2007 年十一月
- 2007 年十月
- 2007 年九月
- 2007 年八月
- 2007 年七月
- 2007 年六月
- 2007 年三月
- 2007 年二月
- 2007 年一月
- 2006 年十二月
- 2006 年十一月
- 2006 年十月
- 2006 年九月
- 2006 年八月
- 2006 年七月
- 2006 年六月
- 2006 年五月
- 2006 年四月
- 2006 年三月
- 2006 年二月
- 2006 年一月
- 2005 年十二月
- 2005 年十一月
分类目录
功能
