ACE入門學習之建立簡單的伺服器端和客戶端

2021-06-04 08:01:03 字數 3449 閱讀 2704

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...