你调用closesocket关闭以后,要想重新发送就必须重新创建socket。
另外一般创建的SOCKET的时候设置SO_REUSEADDR

解决方案 »

  1.   

    这样做不行吗?bool bStopSend = false;
    bool bExit = false; 
    char szBuff[1024] = {0};while(!bExit)
    {
    while(!bStopSend) //当收到停止发送时,就不发送了
    {
    //memcpy(szBuff,...);
    if(sendto(sockfd, szBuff, 1024, 0, (struct sockaddr *)&Server_addr,sizeof(Server_addr))<0)
    {
    shutdown(sockfd,2);
    return -1;
    }
    Sleep(100);
    }
    }
      

  2.   

    你可以在接收端设置一个标志,接收端在给发送端发出“停止"命令后,设置标志,然后把设置标志后所收到的内容忽略掉不作处理我搞不懂你为什么要用udp来连续发送数据说你用来发送文件吧?udp发送文件不可靠啊,一般都用tcp来保证数据完整性,udp只适合短跑不适合长跑说你用来防丢包而一路发过去吧,那多浪费资源啊,一般用udp发送间断数据的都是用超时来判断是否发送成功的。一般udp数据send返回后就设置定时器,规定时间内没收到反馈包就重发,重发n次还是没收到反馈包就直接判断发送失败了哪会有人像你这样用udp拼命发数据的,反正我是没见过