找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3009|回复: 2

一个UDP的问题

[复制链接]
发表于 2008-8-21 15:20:02 | 显示全部楼层 |阅读模式
#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()方法就一直堵塞在那了,请问这个该怎么解决.
发表于 2008-8-21 15:27:11 | 显示全部楼层
设置发送或者接收超时啊。看接口文档。
发表于 2008-8-22 10:12:44 | 显示全部楼层
// 第二个参数为什么是0??
       int bc = peer.recv(buf,0,remoteAddr);    //接收消息

建议楼主先用socket写些小程序,熟悉一些基本的API和数据结构后再学ACE.
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-23 22:13 , Processed in 0.020060 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表