simenliu 发表于 2008-8-21 15:20:02

一个UDP的问题

#include <ace/SOCK_Dgram.h>
#include <ace/INET_Addr.h>
#include <string>
#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
    ACE_INET_Addr remoteAddr(3000,"192.168.0.1");    //所连接的远程地址
    ACE_INET_Addr localAddr;    //本地地址信息
    ACE_SOCK_Dgram peer(localAddr);    //通信通道
    int j = peer.send("hello",5,remoteAddr);    //发送消息
    if (j != -1)
    {
      char buf;
       int bc = peer.recv(buf,0,remoteAddr);    //接收消息
      if( bc != -1)
       {
         string s(buf,bc);
            cout<<endl<<"rev:\t"<<s<<endl;
       }
    }
    peer.close();
    return 0;
}

上面是我的代码.
我的问题是如果192.168.0.1是ping不通的或者192.168.0.1没有发udp给我,那我的peer.recv()方法就一直堵塞在那了,请问这个该怎么解决.

winston 发表于 2008-8-21 15:27:11

设置发送或者接收超时啊。看接口文档。

_coco 发表于 2008-8-22 10:12:44

// 第二个参数为什么是0??
       int bc = peer.recv(buf,0,remoteAddr);    //接收消息

建议楼主先用socket写些小程序,熟悉一些基本的API和数据结构后再学ACE.
页: [1]
查看完整版本: 一个UDP的问题