- 浏览: 2030971 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (651)
- ACE (35)
- BAT (9)
- C/C++ (116)
- fast-cgi (14)
- COM (27)
- python (59)
- CGI (4)
- C# (2)
- VC (84)
- DataBase (29)
- Linux (96)
- P2P (6)
- PHP (15)
- Web (6)
- Memcached (7)
- IME输入法 (11)
- 设计模式 (2)
- 搜索引擎 (1)
- 个人情感 (4)
- 笔试/面试 (3)
- 一亩三分地 (33)
- 历史 (2)
- 地理 (1)
- 人物 (3)
- 经济 (0)
- 不仅仅是笑哦 (43)
- 小故事大道理 (2)
- http://www.bjdsmyysjk120.com/ (0)
- http://www.bjdsmyy120.com/ (0)
- 它山之石可以攻玉 (15)
- 大学生你关注些什么 (28)
- 数据恢复 (1)
最新评论
-
luokaichuang:
这个规范里还是没有让我明白当浏览器上传文件时,STDIN的消息 ...
FastCGI规范 -
effort_fan:
好文章!学习了,谢谢分享!
com技术简介 -
vcell:
有错误os.walk(strPath)返回的已经是全部的文件和 ...
通过python获取目录的大小 -
feifeigd:
feifeigd 写道注意:文章中的CPP示例第二行 #inc ...
ATL入门:利用ATL编写简单的COM组件 -
feifeigd:
注意:文章中的CPP示例第二行 #include " ...
ATL入门:利用ATL编写简单的COM组件
概述: 传输控制协议TCP(Transmission Control Protocol):TCP提供可靠的、面向连接的运输服务,用于高可靠性数据的传输。TCP协议的可靠性是指保证每个tcp报文能按照发送顺序到达客户端。 Tcp通信过程一般为如下步骤: 常用API: 1. ACE_INET_Addr类。 ACE"地址"类ACE_Addr的子类,表示TCP/IP和UDP/IP的地址。它通常包含机器的ip和端口信息,通过它可以定位到所通信的进程。 定义方式: 2. ACE_SOCK_Acceptor类。 服务期端使用,用于绑定端口和被动地接受连接。 3. ACE_SOCK_Connector类。 客户端使用,用于主动的建立和服务器的连接。 4. ACE_SOCK_Stream类。 客户端和服务器都使用,表示客户段和服务器之间的数据通路。 代码示例: 下面例子演示了如何如何用ACE创建TCP通信的Server端。
这个例子实现的功能很简单,服务器端绑定3000号端口,等待一个客户端的连接,然后将从客户端读取的数据再次转发给客户端,也就是实现了一个EchoServer的功能。 相应的客户端程序也比较简单,代码如下:
下表给出了服务器端和客户端的传输过程的比较: 操作 客户端 服务器端 初始化 不需要 调用acceptor.open()绑定端口 建立连接 调用connector.connect()方法 调用acceptor.accept()方法 传输数据 发送:调用peer.recv()方法 关闭连接 调用peer.close()方法
ACE_INET_Addr addInfo(3000,"192.168.1.100");
常用方法:
常用方法:
常用方法:
常用方法:
#include "ace/SOCK_Acceptor.h"
#include "ace/SOCK_Stream.h"
#include "ace/INET_Addr.h"
#include "ace/OS.h"
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
ACE_INET_Addr port_to_listen(3000); //绑定的端口
ACE_SOCK_Acceptor acceptor;
if (acceptor.open (port_to_listen, 1) == -1) //绑定端口
{
cout<<endl<<"bind port fail"<<endl;
return -1;
}
while(true)
{
ACE_SOCK_Stream peer; //和客户端的数据通路
ACE_Time_Value timeout (10, 0);
if (acceptor.accept (peer) != -1) //建立和客户端的连接
{
cout<<endl<<endl<<"client connect. "<<endl;
char buffer[1024];
ssize_t bytes_received;
ACE_INET_Addr raddr;
peer.get_local_addr(raddr);
cout<<endl<<"local port\t"<<raddr.get_host_name()<<"\t"<<raddr.get_port_number()<<endl;
while ((bytes_received =
peer.recv (buffer, sizeof(buffer))) != -1) //读取客户端发送的数据
{
peer.send(buffer, bytes_received); //对客户端发数据
}
peer.close ();
}
}
return 0;
}
#include <ace/SOCK_Stream.h>
#include <ace/SOCK_Connector.h>
#include <ace/INET_Addr.h>
#include <ace/Time_Value.h>
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
ACE_INET_Addr addr(3000,"127.0.0.1");
ACE_SOCK_Connector connector;
ACE_Time_Value timeout(5,0);
ACE_SOCK_Stream peer;
if(connector.connect(peer,addr,&timeout) != 0)
{
cout<<"connection failed !"<<endl;
return 1;
}
cout<<"conneced !"<<endl;
string s="hello world";
peer.send(s.c_str(),s.length()); //发送数据
cout<<endl<<"send:\t"<<s<<endl;
ssize_t bc=0; //接收的字节数
char buf[1024];
bc=peer.recv(buf,1024,&timeout); //接收数据
if(bc>=0)
{
buf[bc]='\0';
cout<<endl<<"rev:\t"<<buf<<endl;
}
peer.close();
return 0;
}
接收:调用peer.send()方法
发表评论
-
u盘乱码恢复方法
2015-05-20 15:29 1749u盘乱码恢复方法,在使用u盘、SD卡、tf卡等移动储 ... -
使用 ACE 库框架在 UNIX 中开发高性能并发应用
2009-11-19 14:36 3155使用 ACE 库框架在 UNIX ... -
ACE中TCP通信
2009-09-17 11:10 2255概述: 传输控制协议TCP(Transmission C ... -
ACE的TSS bug
2009-08-26 13:55 1602ACE的TSS bug Bugzilla Bug ... -
ACE读取ini格式的配置文档
2009-08-12 15:16 2130ACE读取ini格式的配置文档 不多说了,功能很清 ... -
reactor_logging_server会出现运行 error LNK2019
2009-08-06 17:06 2568reactor_logging_server会出 ... -
ACE前摄器Proactor模式
2009-08-05 11:36 4494ACE前摄器Proactor模式 ... -
ACE_Message_Block功能简介
2009-08-05 11:35 3059ACE_Message_Block功能简介 ACE_Me ... -
ACE接受器-连接器模式
2009-08-05 11:34 4031ACE接受器-连接器模 ... -
ACE反应器(Reactor)模式(4)
2009-08-05 11:31 5214ACE反应器(Reactor)模式(4) 定时器的实现 ... -
ACE反应器(Reactor)模式(3)
2009-08-05 11:31 3912ACE反应器(Reactor)模式(3 ... -
ACE反应器(Reactor)模式(2)
2009-08-05 11:30 3504ACE反应器(Reactor)模式(2) 在Socket ... -
ACE反应器(Reactor)模式(1)
2009-08-05 11:29 3359ACE反应器(Reactor)模式(1 ... -
ACE主动对象模式(2)
2009-08-05 11:28 2145ACE主动对象模式(2) 在上篇文章里,我们简单的介绍了 ... -
ACE主动对象模式(1)
2009-08-05 11:27 2233ACE主动对象模式(1) 主动对象模式用于降低方法执行和 ... -
ACE中UDP通信
2009-08-05 11:26 2932ACE中UDP通信 udp是一种无连接的协议,提供无连接 ... -
ACE线程管理机制-面向对象的线程类ACE_Task
2009-08-05 11:24 2726ACE线程管理机制-面向 ... -
ACE线程管理机制-线程的创建与管理
2009-08-05 11:23 2479ACE线程管理机制-线程的创建与管理 有过在不同的操作系 ... -
ACE自适配通信环境简介
2009-08-05 11:21 1913ACE自适配通信环境简 ... -
获取主机信息(C++和C#版)
2009-08-05 11:15 2202获取主机信息(C++和C#版) 在C语言中,主机信息是存 ...
相关推荐
通过分析和学习这些代码,开发者可以深入理解ACE库在TCP通信中的应用,从而在自己的项目中灵活运用。 总结来说,ACE库提供了一套完整的工具集,使得在C++中实现TCP通信变得更加简单和高效。通过使用ACE_SOCK_...
9. **ACE中TCP通信**: TCP是网络通信中最常用的一种协议,ACE提供了对TCP协议的全面支持。学习如何使用ACE创建TCP服务器和客户端,包括连接建立、数据传输、异常处理等,有助于开发者深入理解网络编程的细节。 总...
ACE_Proactor是一个高级事件处理库,它为C++程序员提供了异步I/O操作的抽象,包括TCP协议的网络通信。这个示例代码是关于...通过理解和应用这些示例代码,你可以学习到如何使用ACE库来构建高效、健壮的TCP通信系统。
3. **网络编程**:讲解如何使用ACE进行TCP/UDP/IP通信,以及高级网络编程技巧,如套接字选项、错误处理等。 4. **并发与同步**:介绍ACE提供的线程、信号量、互斥量等并发控制机制,以及如何实现线程安全的编程。 5....
在实际的TCP通信中,`ACE_Proactor`扮演着调度者的角色,它管理事件的注册、调度和回调。当有新的TCP连接请求或数据到达时,它会根据预设的策略调用相应的处理器方法,使得程序可以在不阻塞主线程的情况下处理网络...
在“ACE自适配通信环境中文技术文档(上,中,下篇)”中,读者可以详细了解到上述各个方面的具体实现和使用方法,通过丰富的例子和概念解释,帮助开发者深入理解ACE框架,并能有效地将其应用到实际项目中。
在ACE库中,`ACE_SOCK`是用于处理TCP和UDP通信的基础类。`ACE_SOCK`类提供了打开、绑定、监听、接受和连接等网络通信的基本操作。对于TCP,你可以创建一个`ACE_SOCK_Acceptor`对象来监听客户端的连接请求,然后在...
在“ACE_server.rar”这个压缩包中,包含的是使用ACE库搭建的一个TCP服务器和客户端框架。这个框架设计得简洁且易于扩展,适合开发者快速构建自己的网络服务。 首先,我们来了解一下ACE库的核心特性。ACE是一个开源...
在《C++自适应通信环境ACE》这本电子书中,作者深入浅出地介绍了ACE框架的核心概念和技术细节。这本书分为多个部分,其中"中篇:ACE程序员教程.pdf"可能是专门针对ACE的编程实践进行讲解,涵盖了如何使用ACE库进行...
心跳包是在TCP通信中经常使用的另一种保持连接活性的方法。它通过周期性地发送一个小的数据包(通常称为“心跳包”)来确保连接的有效性和可用性。心跳包的设计一般非常简单,只包含一些基本的信息如包类型、序列号...
QT和ACE都是在软件开发中常用的库,它们在构建网络通信应用方面有着广泛的应用。本文将详细介绍如何使用QT和ACE库来实现一个简单的TCP客户端,以及在这个过程中可能遇到的关键概念和技术。 首先,QT是一个跨平台的...
在“ACE 客户端与服务器模拟通信”这个场景中,我们探讨的是如何利用ACE库来实现客户端和服务器之间的交互。 首先,让我们详细了解一下ACE库的核心特性。ACE库提供了一整套的网络编程接口,包括TCP/IP、UDP、SCTP等...
在Windows编程环境中,CAsyncSocket类是MFC(Microsoft Foundation Classes)库提供的一种用于实现TCP/IP通信的工具。本篇文章将深入探讨CAsyncSocket类在TCP实例中的应用,以及如何利用它来创建一个简单的聊天...
7. **对象定位与发现**:ACE提供了服务注册和服务发现机制,使得分布式系统中的组件能够找到并通信彼此,即使在网络拓扑变化的情况下也能保持连接。 8. **容错和恢复机制**:ACE包含了故障检测、恢复和重新配置的...
在Jace中,C++的类和接口可以通过JNI(Java Native Interface)进行封装,使得Java程序能够像操作本地对象一样使用C++的库,这与ACE的自适配通信特性有异曲同工之妙。 在技术实现上,Jace利用了C++的模板和元编程...
6. **命名服务**:ACE提供了一个轻量级的命名服务,使得分布式系统中的组件可以通过名字查找和通信,增强了系统的可扩展性和可发现性。 7. **分布式对象框架**:ACE包含了CORBA(Common Object Request Broker ...
- **Stream和Datagram**:ACE提供了TCP和UDP两种传输层协议的接口,Stream对应TCP的流式通信,Datagram对应UDP的无连接通信。 - **TCP/UDP Endpoint**:表示网络通信的地址和端口,是连接建立的基础。 - **Timer ...
ACE库的核心理念是提供一组抽象接口,用于处理网络通信中的各种复杂问题,如并发性、异步事件处理、时间同步和资源管理等。 在入门ACE库的过程中,首先需要了解其主要组成部分: 1. **线程管理**:ACE提供了线程...