当前位置:  技术问答>linux和unix

关于UDP的recvfrom收不到数据的问题,请高手帮忙

    来源: 互联网  发布时间:2016-04-09

    本文导语:  先把我遇到的问题部分的代码贴出来: bool CTestSession::getNATAddress(CAddressInfo aoNATServer) {         int iReady;         struct sockaddr_in loServAddress;         fd_set SockFd;         std::string lstrNATMsg("SHOWMENATE");  ...

先把我遇到的问题部分的代码贴出来:
bool CTestSession::getNATAddress(CAddressInfo aoNATServer)
{
        int iReady;
        struct sockaddr_in loServAddress;
        fd_set SockFd;
        std::string lstrNATMsg("SHOWMENATE");
        struct timeval loWaitTime = {10, 500000};
        int liBytes = 0;
        char lcszMsgBuf[256] = {0};
        CAddressInfo loRTPNATAddress;

        if (!mbIsCreated)
                return false;

        bzero(&loServAddress, sizeof(loServAddress));
        loServAddress.sin_family = AF_INET;
        loServAddress.sin_addr.s_addr = inet_addr(aoNATServer.getIP().c_str());
        loServAddress.sin_port = htons(aoNATServer.getPort());

        int i = 0;
        lstrNATMsg += "n";
        while (!mbIsGotRTPNAT)
        {
                if (++i >= 100)
                        return false;

                std::string lstrMsgType;
                std::string lstrCmdBuf;

                sendto(miRTPSocket, (const char *)lstrNATMsg.c_str(), lstrNATMsg.length(),
                                0, (const sockaddr *)&loServAddress, sizeof(loServAddress));
                write_log(XFS_LOG_INFO, "send command", "send to server : %s.", lstrNATMsg.c_str());

                memset(lcszMsgBuf, 0, 256);
                FD_ZERO(&SockFd);
                FD_SET(miRTPSocket, &SockFd);
                iReady = select(miRTPSocket + 1, &SockFd, NULL, NULL, &loWaitTime);
                if(iReady  0)
                {
                        lstrCmdBuf.clear();
                        lstrMsgType.clear();
                        lstrCmdBuf += lcszMsgBuf;
                        std::stringstream lstrRTPStream(lstrCmdBuf);
                        lstrRTPStream >> lstrMsgType;
                        if (lstrMsgType == "SHOWMENATR")
                        {
                                loRTPNATAddress.decode(lstrRTPStream);
                                moNATLock.lock();
                                muiRTPPort = loRTPNATAddress.getPort();
                                moNATLock.unlock();

                                lstrRTPStream 

    
 
 

您可能感兴趣的文章:

  • udp socket recvfrom偶尔会返回-1,perror打印出的提示是"recvfrom: Resource temporarily unavailable"
  • [疑惑]UDP中的recvfrom奇怪现象,怎么保持上次sendto的内容???哪位帮解释一下
  • udp socket通讯,recvfrom()一直返回-1,perror提示"recvfrom: Bad address"
  • 创建了2个套接字Raw socket和socket,都调用recvfrom(),一个专门捕获数据包,一个在9001端口监听UDP请求,怎么不行?
  • linux下udp的recvfrom问题,大神,我需要你。。。
  • 【困惑】UDP组播包收不到,但可以抓到
  • 我想在windows下往linux发送udp包,为什么收不到呀,请指教!
  • 利用UDP时客户端为何接收到不到服务器发来的消息????
  • 期待高手:关于udp的sendto,发给本机ip,为什么我抓不到包?
  • udp客户端收不到数据?
  • udp接收不到数据问题 急!!
  • 请教:client怎么收不到UDP包?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 帮帮忙!!!我用udp sockets 写了聊天室,有问题。
  • 想实现一个程序 UDP例程的。 实现2个客户端通信, 而不是客户端于服务器的通信,大家帮忙想下怎么写啊。下面是我写的客户端和服务器的通信。 服务器作为中转数据
  • Qt:UDP:如何划分接收到的UDP包的界限
  • udp包大于1500字节网络传输会分包吗?udp tcp多大的包比较合适?
  • http走的是tcp还是udp?ssh是tcp还是udp?
  • tcp和udp套接字有何不同?在什么情况下用tcp什么情况下用udp????
  • 50求教一个菜鸟级别的UDP套接字问题,关于UDP server端只能接收一次数据的问题?在线等,一直等............
  • udp方式抓取网页
  • python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
  • udp socket客户端和udp服务端程序示例分享
  • TCP与UDP通信问题!
  • 请问下怎么关闭SUSE 9.1下UDP的checksum?
  • 如何判断udp端口可达
  • 关于epoll&udp的问题?
  • UDP包怎么生成啊?用什么函数??简单问题,帮个忙哈
  • 对于socket UDP传输,一个端口只能被一个进程绑定?
  • IP,UDP,TCP的校验和计算
  • UDP协议在实现时有没有在发送端或者接收端设置缓冲区?
  • 基于UDP的数据传输 UDT
  • 服务进程收到的第一个UDP包的远端地址不对?
  • udp问题
  • 关于udp sendto时候端口选定问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3