荔园在线

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

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


发信人: Second (石开), 信区: Program
标  题: 6.3 利用WinSock建立有连接的通信
发信站: 荔园晨风BBS站 (Wed May 30 07:06:27 2001), 转信

6.3 利用WinSock进行有连接的通信

WinSock提供了对TCP(传输控制协议)的支持,通过TCP协议我们可以与指定IP地址的主
机建立,同时利用建立的连接可以双向的交换数据。利用CSocket操纵有连接数据交换很
简单,但是在有连接的通信中必需有一方扮演服务器的角色等待另一方(客户方)的连
接请求,所以服务器方需要建立一个监听套接口,然后在此套接口上等待连接。当连接
建立后会产生一个新的套接口用于通信。而客户方在创建套接口后只需要简单的调用连
接函数就可以创建连接。对于有连接的通信不论是数据的发送还是发送与接收的顺序都
是有保证的。双方的函数调用顺序如图。

下面的代码演示了如何建立连接和发送/接收数据:
/*
服务器方在端口6802上等待连接,当连接建立后关闭监听套接口
客户方向服务器端口6802发起连接请求
*/
BOOL CMy63_s1_serverDlg::OnInitDialog()
{
        CDialog::OnInitDialog();
        CSocket sockListen;
        //创建本地套接口
        sockListen.Create(6802,SOCK_STREAM,"127.0.0.1");
        //绑定参数
        sockListen.Bind(6802,"127.0.0.1");
        sockListen.Listen(5);
        //等待连接请求,m_sockSend为成员变量,用于通信
        sockListen.Accept(m_sockSend);
        //关闭监听套接口
        sockListen.Close();
        //启动定时器,定时发送数据
        SetTimer(1,3000,NULL);
...
}
void CMy63_s1_serverDlg::OnTimer(UINT nIDEvent)
{
        static iIndex=0;
        char szSend[20];
        sprintf(szSend,"%010d",iIndex++);
        //发送TCP数据
        int iSend= m_sockSend.Send(szSend,10,0);
...
}
BOOL CMy63_s1_clientDlg::OnInitDialog()
{
        CDialog::OnInitDialog();
        //创建本地套接口
        m_sockRecv.Create();
        //发起连接请求
        BOOL fC=m_sockRecv.Connect("127.0.0.1",6802);
        TRACE("connect is %s\n",(fC)?"OK":"Error");
        //启动定时器,定时接收数据
        SetTimer(1,3000,NULL);
...
}
void CMy63_s1_clientDlg::OnTimer(UINT nIDEvent)
{
        char szRecv[20];
        //接收TCP数据
        int iRecv =m_sockRecv.Receive(szRecv,10,0);
        TRACE("received %d byte\n",iRecv);
        if(iRecv>=0)
        {
                szRecv[iRecv]='\0';
                m_szRecv=szRecv;
                UpdateData(FALSE);
        }
...
}
下载例子代码,63_s1_client工程为客户,63_s1_server工程为服务器方。

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

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


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

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