贝贝花花包包店,精品555皮具,钱夹,皮夹

字体:  

一个UDP的问题

simenliu 发表于: 2008-8-21 15:20 来源: ACE 开发者

#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[100];
       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 at 2008-8-21 15:27:11
设置发送或者接收超时啊。看接口文档。
_coco at 2008-8-22 10:12:44
// 第二个参数为什么是0??
       int bc = peer.recv(buf,0,remoteAddr);    //接收消息

建议楼主先用socket写些小程序,熟悉一些基本的API和数据结构后再学ACE.