- 浏览: 2000171 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 1693u盘乱码恢复方法,在使用u盘、SD卡、tf卡等移动储 ... -
使用 ACE 库框架在 UNIX 中开发高性能并发应用
2009-11-19 14:36 3101使用 ACE 库框架在 UNIX ... -
ACE中TCP通信
2009-09-17 11:10 2213概述: 传输控制协议TCP(Transmission C ... -
ACE的TSS bug
2009-08-26 13:55 1543ACE的TSS bug Bugzilla Bug ... -
ACE读取ini格式的配置文档
2009-08-12 15:16 2094ACE读取ini格式的配置文档 不多说了,功能很清 ... -
reactor_logging_server会出现运行 error LNK2019
2009-08-06 17:06 2537reactor_logging_server会出 ... -
ACE前摄器Proactor模式
2009-08-05 11:36 4440ACE前摄器Proactor模式 ... -
ACE_Message_Block功能简介
2009-08-05 11:35 3016ACE_Message_Block功能简介 ACE_Me ... -
ACE接受器-连接器模式
2009-08-05 11:34 3975ACE接受器-连接器模 ... -
ACE反应器(Reactor)模式(4)
2009-08-05 11:31 5157ACE反应器(Reactor)模式(4) 定时器的实现 ... -
ACE反应器(Reactor)模式(3)
2009-08-05 11:31 3858ACE反应器(Reactor)模式(3 ... -
ACE反应器(Reactor)模式(2)
2009-08-05 11:30 3447ACE反应器(Reactor)模式(2) 在Socket ... -
ACE反应器(Reactor)模式(1)
2009-08-05 11:29 3326ACE反应器(Reactor)模式(1 ... -
ACE主动对象模式(2)
2009-08-05 11:28 2102ACE主动对象模式(2) 在上篇文章里,我们简单的介绍了 ... -
ACE主动对象模式(1)
2009-08-05 11:27 2194ACE主动对象模式(1) 主动对象模式用于降低方法执行和 ... -
ACE中UDP通信
2009-08-05 11:26 2882ACE中UDP通信 udp是一种无连接的协议,提供无连接 ... -
ACE线程管理机制-面向对象的线程类ACE_Task
2009-08-05 11:24 2686ACE线程管理机制-面向 ... -
ACE线程管理机制-线程的创建与管理
2009-08-05 11:23 2435ACE线程管理机制-线程的创建与管理 有过在不同的操作系 ... -
ACE自适配通信环境简介
2009-08-05 11:21 1877ACE自适配通信环境简 ... -
获取主机信息(C++和C#版)
2009-08-05 11:15 2170获取主机信息(C++和C#版) 在C语言中,主机信息是存 ...
相关推荐
ACE_Proactor TCP协议通信示例代码
ACE 入门,ACE中文文档,ACE_Task框架,ACE的框架及其核心,ACE反应器(Reactor)模式,ACE线程管理机制,ACE通用服务端框架,ACE通用客户端框架,ACE中TCP通信
使用ACE_Proactor进行TCP通信的示例代码。
一个简单的ACE网络通信,服务器涉及到多线程接收
注:运行前,先配置好ACE库,本demo使用的是ACE6.0 本例子实现了一个简单的socket tcp通信。供初学者学习使用。 ACE安装配置参考: http://blog.csdn.net/hireboy/article/details/8863458
ACE库开发多线程,tcp通信,udp通信,很方便
第二,帮助ace应用开发人员加深对ace框架的理解,提升开发水平,更好地去定制和扩展ace框架,以及解决c 网络通信中的难题;第三,帮助c 开发人员加深c 语言功底,书中有大量对c 源代码的分析,包括网络编程、动态库...
在TCP传输控制方法的基础上,通过简单轻便的连接建立、平缓的D-AIMD拥塞算法、灵活的初始拥塞窗口值和慢启动阈值等方法对其进行改造,借助UDP数据包,利用自适应通信环境(ACE)接口,实现了快速启动、高吞吐率的...
在前面的章节中提到的Tcp通信的例子中,就是采用的阻塞式的工作方式:当接收tcp数据时,如果远端没有数据可以读,则会一直阻塞到读到需要的数据为止。这种方式的传输和传统的被动方法的调用类似,非常直观,并且简单...
花了1周的时间研究各种TCP模型, 包括LINUX和WINDOWS平台等, 包括C&C++, C#, JAVA, GOLANG, ERLANG等居于IOCP, SELECT, POLL, EPOLL, KQUEUE, BIO, NIO, AIO, 并发语言等实现的同步或异步, 阻塞或非阻塞通信模型...
花了1周的时间研究各种TCP模型, 包括LINUX和WINDOWS平台等, 包括C&C++, C#, JAVA, GOLANG, ERLANG等居于IOCP, SELECT, POLL, EPOLL, KQUEUE, BIO, NIO, AIO, 并发语言等实现的同步或异步, 阻塞或非阻塞通信模型...
5.1.4 TCP穿越NAT 107 5.1.5 NAT类型检测 108 5.1.6 常见NAT穿越解决方案 111 5.2 P2P与IMS结合 112 5.2.1 什么是IMS 112 5.2.2 P2P与IMS的网络融合 112 5.3 VoIP通信基础 113 5.3.1 VoIP系统概念 ...
ACE:Ace压缩档案格式 ACT:Microsoft office助手文件 AIF,AIFF:音频互交换文件,Silicon Graphic and Macintosh应用程序的声音格式 ANI:Windows系统中的动画光标 ARC:LH ARC的压缩档案文件 ARJ:Robert ...