首页 > 代码库 > ACE Proactor UDP (接收什么就打印什么)1.0

ACE Proactor UDP (接收什么就打印什么)1.0

普通的UDP组件发送和接收

接收端

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

#include "boost/lexical_cast.hpp"
using namespace boost;

void receive()
{
    ACE_INET_Addr port_to_listen(3000);    //绑定的端口(本地地址)
    ACE_SOCK_Dgram peer(port_to_listen);    //本地地址藏匿于此,发送的时候除了知道目的地址,也要携带本地地址的(因为UDP没有连接这一说)

    ACE_INET_Addr remoteAddr;    //所连接的远程地址
    char buf[100]={0};
    int receive_length = peer.recv(buf,100,remoteAddr);    //接收消息,获取远程地址信息
    if( receive_length != -1)
    {
        string received(buf,receive_length);
        cout<<"server received:["<<received<<"]"<<endl;
    }
}

int main(int argc, char *argv[]) 
{
    receive();

    return 0; 
} 

发送端

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

#include "boost/lexical_cast.hpp"
using namespace boost;



void send(void)
{
    ACE_INET_Addr remoteAddr(3000,"127.0.0.1");    //所连接的远程地址
    ACE_INET_Addr local_addr;
    ACE_SOCK_Dgram peer(local_addr);    //本地地址藏匿于此,发送的时候除了知道目的地址,也要携带本地地址的(因为UDP没有连接这一说)

    string send_str;
    double i =3.1415926535897932;
    send_str = lexical_cast<string>(i++).c_str();
    int send_length = peer.send(send_str.c_str(),send_str.size(),remoteAddr);    //发送消息到目的地址
    if (send_length != -1)
    {
        cout<<"send "<<send_str<<endl;
    }
}
int main(int argc, char *argv[]) 
{
    send();

    return 0; 
} 

执行接收端之后再执行发送端,执行结果



ACE Proactor UDP (接收什么就打印什么)1.0