From baa6fb17d950c4f5684f5d798f90595456723418 Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期二, 28 七月 2020 16:16:46 +0800 Subject: [PATCH] conflict --- README.md | 213 ++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 163 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index 327d634..ba8d825 100644 --- a/README.md +++ b/README.md @@ -1,92 +1,205 @@ -## 瀹炰緥 +# 1. 瀹炰緥 +浠ヤ笅瀹炰緥浠g爜鍦╜demo`鏂囦欢澶逛笅 +## 1.1 Bus妯″紡 +**Source** - ### 璇锋眰搴旂瓟妯″紡 - - `source ./demo/server.c` +`dgram_mod_bus.c` + +**缂栬瘧** + +瀹夎濂絪o鍖呭悗锛岀敤濡備笅鐨勬柟寮忕紪璇戯紝shm_queue鏄�氫俊闃熷垪鍖咃紝usgcommon鏄叕鍏卞寘锛宲thread鏄郴缁熺殑绾跨▼鍖� +`g++ dgram_mod_bus.c -mcx16 -std=c++11 -lshm_queue -lusgcommon -lpthread` + +**婕旂ず** + +鍚姩bus `./dgram_mod_bus server 8`銆傜劧鍚庢墦寮�涓や釜瀹㈡埛绔繛鎺us锛� 绗竴涓鎴风璁㈤槄 "news", 绗簩涓鎴风鍙戝竷 "news". 绗竴涓鎴风浼氭敹鍒扮浜屼釜瀹㈡埛绔帹閫佺殑淇℃伅銆� + +鍚姩bus +``` +$ ./dgram_mod_bus server 8 +``` + +绗竴涓鎴风璁㈤槄 "news" +``` + +$ ./dgram_mod_bus client 8 +Can I help you? sub, pub or quit +sub +Please input topic! +news +Sub success! +Can I help you? sub, pub or quit +鏀跺埌璁㈤槄娑堟伅:111111111111111111111 + + ``` +绗簩涓鎴风鍙戝竷 "news" + ``` +$ ./dgram_mod_bus client 8 +Can I help you? sub, pub or quit +pub +Please input topic and content +news 111111111111111111111 +Pub success! +Can I help you? sub, pub or quit + + ``` +杩欓噷鍙互鎵撳紑璁稿涓鎴风鍙戝竷鍜岃闃呮秷鎭�� +## 1.2 req_rep妯″紡, 閫傚簲浜庢敞鍐� - **杩愯server绔細** - - `./req_req server 8` - - **杩愯client绔細** - 鍙互鎵撳紑澶氫釜client - - `./req_rep client 8` - - 鍦╟lient绔緭鍏ヨ姹備俊鎭紝server 绔洖搴旓紝client绔緭鍑哄洖搴斾俊鎭� - - - ### 鍙戝竷璁㈤槄妯″紡 - - **杩愯server绔細** - - `./pub_sub server 8` - - - **杩愯client绔細** - 鍙互鎵撳紑澶氫釜client - - `./pub_sub client 8` - - 鍦╯erver绔緭鍏ュ彂甯冧俊鎭紝client绔緭鍑烘敹鍒扮殑璁㈤槄淇℃伅 +**Source** `dgram_mod_req_rep.c` -## 鎺ュ彛璇存槑 +**缂栬瘧** 鍚屼笂 + +**婕旂ず** + +``` +## 鍚姩娉ㄥ唽涓績 +./dgram_mod_req_rep server 2 & node0=$! && sleep 1 +## 鍚戞敞鍐屼腑蹇冨彂閫佹秷鎭� +./dgram_mod_req_rep client 2 node1 +kill $node0 +``` + +## survey妯″紡锛� 閫傚簲浜庡績璺� +**Source** `dgram_mod_survey.c` + +**缂栬瘧** 鍚屼笂 + +**婕旂ず** +鍚姩蹇冭烦涓績 +``` +$ ./dgram_mod_survey server 3 + +RECEIVED HREARTBEAT FROM 1000: 0 +RECEIVED HREARTBEAT FROM 1000: 1 +RECEIVED HREARTBEAT FROM 1000: 2 +RECEIVED HREARTBEAT FROM 1000: 3 +RECEIVED HREARTBEAT FROM 1000: 4 +RECEIVED HREARTBEAT FROM 1000: 5 +RECEIVED HREARTBEAT FROM 1000: 6 +RECEIVED HREARTBEAT FROM 1000: 7 +RECEIVED HREARTBEAT FROM 1000: 8 +RECEIVED HREARTBEAT FROM 1000: 9 + +``` + +鎵撳紑涓�涓鎴风锛岃繛鎺ュ績璺充腑蹇� +``` +$ ./dgram_mod_survey client 3 + +SEND HEART:0 +SEND HEART:1 +SEND HEART:2 +SEND HEART:3 +SEND HEART:4 +SEND HEART:5 +SEND HEART:6 +SEND HEART:7 +SEND HEART:8 +SEND HEART:9 + +``` + + +# 2. 鎺ュ彛璇存槑 + +shm_mm.h +``` +/** + * 鍒濆鍖栧叡浜唴瀛� + * @size 鍏变韩鍐呭瓨澶у皬, 鍗曚綅M + * + */ +void shm_init(int size); + +/** + * 閿�姣佸叡浜唴瀛� + * 鏁翠釜杩涚▼閫�鍑烘椂闇�瑕佹墽琛岃繖涓柟娉曪紝璇ユ柟娉曢鍏堜細妫�鏌ユ槸鍚﹁繕鏈夊叾浠栬繘绋嬪湪浣跨敤璇ュ叡浜唴瀛橈紝濡傛灉杩樻湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ氨鍙槸detach,濡傛灉娌℃湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ垯閿�姣佹暣鍧楀唴瀛樸�� + */ +void shm_destroy(); +``` + +dgram_mod_socket.h ``` /** * 鍒涘缓socket * @return socket鍦板潃 */ -void *mod_open_socket(int mod); +void *dgram_mod_open_socket(); /** * 鍏抽棴socket + * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜 */ -int mod_close_socket(void * _socket); +int dgram_mod_close_socket(void * _socket); /** * 缁戝畾绔彛鍒皊ocket, 濡傛灉涓嶇粦瀹氬垯绯荤粺鑷姩鍒嗛厤涓�涓� * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜 */ -int mod_socket_bind(void * _socket, int port); - - -/** - * 鏈嶅姟绔紑鍚繛鎺ョ洃鍚� - * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜 - */ -int mod_listen(void * _socket); - -/** - * 瀹㈡埛绔彂璧疯繛鎺ヨ姹� - */ -int mod_connect(void * _socket, int port); +int dgram_mod_bind(void * _socket, int port); /** * 鍙戦�佷俊鎭� + * @port 鍙戦�佺粰璋� * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜 */ -int mod_send(void * _socket, const void *buf, const int size); +int dgram_mod_sendto(void *_socket, const void *buf, const int size, const int port); + /** * 鎺ユ敹淇℃伅 + * @port 浠庤皝鍝噷鏀跺埌鐨勪俊鎭� * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜 */ -int mod_recv(void * _socket, void **buf, int *size) ; +int dgram_mod_recvfrom(void *_socket, void **buf, int *size, int *port); /** - * 閲婃斁鎺ユ敹淇℃伅鐨刡uf + * 鍙戦�佽姹備俊鎭苟绛夊緟鎺ユ敹搴旂瓟 + * @port 鍙戦�佺粰璋� + * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜 +*/ +int dgram_mod_sendandrecv(void * _socket, const void *send_buf, const int send_size, const int port, void **recv_buf, int *recv_size) ; + + +/** + * 鍚姩bus + * + * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜 +*/ +int dgram_mod_start_bus(void * _socket); + +/** + * 璁㈤槄鎸囧畾涓婚 + * @topic 涓婚 + * @size 涓婚闀垮害 + * @port 鎬荤嚎绔彛 */ -void mod_free(void *buf); +int dgram_mod_sub(void * _socket, void *topic, int size, int port); + +/** + * 鍙戝竷涓婚 + * @topic 涓婚 + * @content 涓婚鍐呭 + * @port 鎬荤嚎绔彛 + */ +int dgram_mod_pub(void * _socket, void *topic, int topic_size, void *content, int content_size, int port); /** * 鑾峰彇soket绔彛鍙� */ -int mod_get_socket_port(void * _socket); +int dgram_mod_get_port(void * _socket) ; + + +/** + * 閲婃斁瀛樺偍鎺ユ敹淇℃伅鐨刡uf + */ +void dgram_mod_free(void *buf) ; ``` -- Gitblit v1.8.0