荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Second (石开), 信区: Program
标  题: 6.2 利用WinSock进行无连接的通信
发信站: 荔园晨风BBS站 (Wed May 30 07:05:21 2001), 转信

6.2 利用WinSock进行无连接的通信

WinSock提供了对UDP(用户数据报协议)的支持,通过UDP协议我们可以向指定IP地址的
主机发送数据,同时也可以从指定IP地址的主机接收数据,发送和接收方处于相同的地
位没有主次之分。利用CSocket操纵无连接的数据发送很简单,首先生成一个本地套接口
(需要指明SOCK_DGRAM标记),然后利用
int CAsyncSocket::SendTo( const void* lpBuf, int nBufLen, UINT nHostPort, LP
CTSTR lpszHostAddress = NULL, int nFlags = 0 )发送数据,
int CAsyncSocket::ReceiveFrom( void* lpBuf, int nBufLen, CString& rSocketAdd
ress, 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);
...
}
/*
接收方采用同步读取数据的方式,所以没有读到数据函数调用将不会返回
*/
下载例子代码,62_s1_client工程为发送方,62_s1_server工程为接收方。

--
                            既然热爱生命
                            那么,
                            一切都在意料之中。

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.28.190]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店