您的位置:首页 > 理论基础 > 计算机网络

ACE学习笔记一(基本的TCP/IP Socket用法)

2015-06-04 17:07 791 查看
1.基本的概念

连接器(Connector):主动建立连接ACE_SOCK_Connector

***(acceptor):被动建立连接ACE_SOCK_Acceptor

流(Stream):传输数据ACE_SOCK_Stream
地址(address ):定义对端点的寻址手段ACE_INET_Addr
//////////////////////////////////////////////////////////
2.一个简单的客户端的创建方法

(1)创建一个ACE_Sock_Addr,用这个创建的地址来进行连接相应的Socket
(2)ACE使用ACK_SOCK_Stream对象表示已经连接的TCPSocket,为了主动的使用ACE_Sock_Stream连接到服务器,需要使用ACE_Sock_Connector和已经构造好的ACE_INET_Addr:

ACE_SOCK_Addr srvr(50000,ACE_LOCALHOST);//定义待连接的对端的地址

ACE_SOCK_Connector connector;

ACE_SOCK_Stream peer;

If(-1 == connector.connect(peer,srvr))
{
ACE_ERROR_RETURN((LM_ERROR,ACE_TEXT(“%p\n”),ACE_TEXT(“Connect”)),1);
}
Connect的参数是:要连接的流对象,以及它应该连接到的流地址。

(3)如果连接成功,ACE_SOCK_Stream就会进入相应的连接状态,用来进行和服务器进行通讯

peer.send_n(“update\n”,7);

bc = peer.recv(buf,sizeof(buf));

write(1,buf,bc);

peer.close();

关于connect()函数、send_n函数、recv_n函数对于超时的处理可以使用相应的ACE_Time_Value进行指定

///////////////////////////////////////////////////

3.创建一个简单的服务器

(1)创建一个ACE_INET_Addr定义想要进行侦听的接口

(2)使用ACE_SOCK_Acceptor对象在该端口上打开一个侦听器

ACE_INET_Addr port_to_listen(50000);

ACE_SOCK_Acceptor acceptor;

If(acceptor.open(port_to_listen,1)==-1)

ACE_ERROR_RETURN((LM_ERROR,ACE_TEXT(“%p\n”),ACE_TEXT(“acceptor.opn”)),100);
(3) 一旦定义了地址,并打开了用于监听新连接的***,就要等待那些新的连接的到达。这是通过Accept()方法完成的。

If(acceptor.accept(peer,&peer_addr,&time_out,0)==-1)

{

//提示相应的信息

}
(4)连接建立成功以后,peer_addr中将会填写相应的对端的IP地址和端口号,下面就可以进行相应的通信了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: