Chinaunix首页 | 论坛 | 博客
  • 博客访问: 646166
  • 博文数量: 175
  • 博客积分: 2457
  • 博客等级: 大尉
  • 技术积分: 1488
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-13 20:31
文章分类

全部博文(175)

文章存档

2012年(22)

2011年(153)

分类: C/C++

2011-09-04 16:23:13

下面是我在vc6.0中用到的udp实现通信,由于不怕数据的丢失,故而没有设计通信头来使数据传输变得可靠。我只需接收到多少用多少。(后期修改 将同步字节增加为2个
server:
1.socket
2.设置接收超时时间
struct timeval tv;
tv.tv_sec = 1;
tv.tv_usec = 0;
int optlen = sizeof(struct timeval);
if ( setsockopt(m_hSocket,SOL_SOCKET,SO_RCVTIMEO,(char*)&tv,optlen) ==
SOCKET_ERROR)
{
strError.Format("set Error:%d ",error=WSAGetLastError());
AfxMessageBox(strError);
 closesocket(m_hSocket);
 return ;
}
3.bind
4.do{
Ret=recvfrom(pDlg->m_hSocket, sendBuf, 258, 0,(SOCKADDR*)&Client, &len);
if (sendBuf[0]=='R')
{
sendBuf[0]='A';
sendto(pDlg->m_hSocket,sendBuf,sizeof(sendBuf),0,(SOCKADDR*)&Client, len);
}
} while (Ret<=0);
//此处是与client同步
5.循环recvfrom接收数据  由于有了超时时间 当udp接收不到数据那么 将会超时。

client
1.socket
2.   buf[0]='R';
sendto(myclient,buf,sizeof(buf),0,(SOCKADDR*)&addrcl, len);
    Ret=recvfrom(myclient, buf, 258, 0,(SOCKADDR*)&addrcl, &len);
与server同步
3.用sendto循环发送数据





阅读(5915) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~