ace自適配通行環境(adaptive communicatin environment)是物件導向的框架和工具包。它為通訊軟體實現了核心的併發和分布式模式。
ace具有分層的體系結構,基本分為三層:
1.作業系統適配層(os)
2.c++包裝層
3.框架和模式層
shock類屬(ace_sock):
1.dgram類和stream類:dgram類基於udp資料報協議,提供不可靠的無連線訊息傳遞功能。另一方面,stream類基於tcp協議,提供面向連線的訊息傳遞.
2.acceptor、connector類和stream類:acceptor和connector類分別用於被動和主動地建立連線。acceptor類封裝bsd accept()呼叫,而connector封裝bsd connect()呼叫。stream類用於在連線建立之後提供雙向的資料流,幷包含有傳送和接收.
ace中流包裝中提供面向連線的通訊,資料傳輸類包括ace_sock_stream類,建立連線的針對於tcp/ip的ace_sock_connector 和 ace_sock_acceptor.
建立乙個伺服器端所要建立的變數:
ace_inet_addr server_addr_;
ace_sock_acceptor
ace_sock_connector
ace_sock_stream
而客戶端則多了個:
ace_sock_connector
伺服器開啟偵聽**:
ace_server.h:
ace_server.h:
#include"ace/sock_acceptor.h"
#include"ace/sock_stream.h"
#include"ace/log_msg.h"
#include"ace/time_value.h"
#definesize_data18
#definesize_buf1024
#defineno_interation5
classace_server;
ace_server.cpp:
#include"stdafx.h"
#include"ace_server.h"
ace_server::ace_server(intport) : server_addr_(port), peer_acceptor_(server_addr_)
ace_server::~ace_server()
intace_server::handle_connection()
else
}
if(new_stream_.close() == -1)
ace_error((lm_error,"%p/n","close error"));
return0; }
intace_server::accept_connections()
else
}}
main:
#include"ace_server.h"
int_tmain(intargc, _tchar* argv)
if( lobyte( wsadata.wversion ) !=2||
hibyte( wsadata.wversion ) !=2)
ace_server server(1234);
server.accept_connections();
getchar();
return0; }
客戶端:
client.h:
#definesize_buf128
#defineno_interation5
classace_client_;
client.cpp:
#include"stdafx.h"
#include"client.h"
ace_client_::ace_client_(char* hostname, intport) : remote_addr_(port, hostname)
intace_client_::connect_to_server()
else
return0; }
intace_client_::send_to_server()
close();}
intace_client_::close()
main:
int_tmain(intargc, _tchar* argv)
if( lobyte( wsadata.wversion ) !=2||
hibyte( wsadata.wversion ) !=2)
ace_client_ client("wangj",1234);
client.connect_to_server();
client.send_to_server();
getchar();
return0; }
node基礎學習之(1)建立簡單服務
直接記錄 因為node也是基於js的。那麼接下來開始建立第乙個node服務程式 helloworld小案例。因為我還不會使用markdown文件編輯器,所以版面我會盡可能好看,請原諒 我的node.js是安裝在d 盤的乙個目錄下。學習node要接受乙個觀念那就是模組,也可以說是大神們封裝好了很多的a...
SVN學習 簡單入門之建立倉庫 匯入 檢出(一)
從剛剛參加工作就開始使用svn,清晰的記得那年師姐比較生氣的來找我 你怎麼又不更新就提交 了,把我寫的都給覆蓋掉了 哈哈 雖然一直在用svn,不過在日常工作中主要用到的是簡單的操作,而且大多數是基於eclipse外掛程式 客戶端小烏龜直接操作的。對於svn的理解還是比較單一的。當然目前除了集中式版本...
wcf的簡單服務建立
這是我第一次在部落格寫作,主要是為了記錄一下自己在工作或者生活中的一些所得,希望能夠用作乙個備忘錄吧。首先,在vs上面建立乙個專案,不用特定的建立wcf專案,直接建立乙個空專案即可,廢話不多說直接上 這個是服務端的入口程式,因為服務比較簡單,不需要手動配置,直接用 的方式新增配置。using sys...