| /* 服务器方在端口6802上等待连接,当连接建立后关闭监听套接口 客户方向服务器端口6802发起连接请求 */ BOOL CMy63_s1_serverDlg::OnInitDialog() { CDialog::OnInitDialog(); CSocket sockListen; file://创建本地套接口 sockListen.Create(6802,SOCK_STREAM,"127.0.0.1"); file://绑定参数 sockListen.Bind(6802,"127.0.0.1"); sockListen.Listen(5); file://等待连接请求,m_sockSend为成员变量,用于通信 sockListen.Accept(m_sockSend); file://关闭监听套接口 sockListen.Close(); file://启动定时器,定时发送数据 SetTimer(1,3000,NULL); ... } void CMy63_s1_serverDlg::OnTimer(UINT nIDEvent) { static iIndex=0; char szSend[20]; sprintf(szSend,"%010d",iIndex++); file://发送TCP数据 int iSend= m_sockSend.Send(szSend,10,0); ... } BOOL CMy63_s1_clientDlg::OnInitDialog() { CDialog::OnInitDialog(); file://创建本地套接口 m_sockRecv.Create(); file://发起连接请求 BOOL fC=m_sockRecv.Connect("127.0.0.1",6802); TRACE("connect is %s\n",(fC)?"OK":"Error"); file://启动定时器,定时接收数据 SetTimer(1,3000,NULL); ... } void CMy63_s1_clientDlg::OnTimer(UINT nIDEvent) { char szRecv[20]; file://接收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); } ... } |