各位!一个udp的简单的client程序,发送数据没问题,就是不能接受server端的分包数据,实在是郁闷之激,不知道是为什么?另,我用sniffer看到了是有分包的数据到来

解决方案 »

  1.   

    我的接收代码: while((Ret=select(0,&FdRead,NULL,NULL,&t_val)) != 1 
    && (Inicio + ntimeout) > time(NULL))
    {
    if(FD_ISSET(s, &FdRead))
    break;   FD_ZERO(&FdRead);
      FD_SET(s, &FdRead);
      t_val.tv_sec=0;
      t_val.tv_usec=0;
    }

    if(Ret != 1)
    {
      return MMS_UDP_RECE_TIMEOUT; 
    } memset(datagram, 0, sizeof(datagram));
    long n = recvfrom(s, datagram, 1024, 0, (LPSOCKADDR)&SockAddr,&LenSockAddr);
      

  2.   

    sniffer可以得到到网卡的包,但不一定到应用层的...
    接收字节/发送多大一次?
      

  3.   

    我们以前的做法是。
    每包都在60000这样子,服务为linux
    client win2k [udp]
    自定义一个校验方式。大小,长度不符就要求重发。
    ntimeout == ???
      

  4.   

    谢谢你的答复!ntimeout=60,如何定义一个校验方式?
      

  5.   

    现在是server重发的数据我也收不到,无论它重发多少次。但其他不分包的数据我就能收到。
      

  6.   

    找到问题了,原来是server发来的udp包没带端口信息,请问这种包如何接受?有人知道吗?