Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1501221
  • 博文数量: 218
  • 博客积分: 6394
  • 博客等级: 准将
  • 技术积分: 2563
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-08 15:33
个人简介

持之以恒

文章分类

全部博文(218)

文章存档

2013年(8)

2012年(2)

2011年(21)

2010年(55)

2009年(116)

2008年(16)

分类: 网络与安全

2010-01-02 13:26:32

ACE学习一:基本的TCP/IP Socket用法

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地址和端口号,下面就可以进行相应的通信了
阅读(6495) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~