From f85c9b875b060681b51f57b15074ba1c7c9f5636 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期一, 20 七月 2020 11:10:02 +0800
Subject: [PATCH] update

---
 queue/include/shm_socket.h |   16 --
 queue/include/mod_socket.h |   37 +++++
 demo/pub_sub.c             |   57 +++++++++
 demo/pub_sub               |    0 
 queue/mod_socket.c         |    5 
 demo/req_rep.c             |   60 ++++++++++
 demo/Makefile              |   32 +++++
 demo/req_rep               |    0 
 queue/include/shm_mm.h     |   13 +
 README.md                  |   86 ++++++++++++++
 10 files changed, 284 insertions(+), 22 deletions(-)

diff --git a/README.md b/README.md
index a611ce8..327d634 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,92 @@
  
 ## 瀹炰緥
- 璇锋眰搴旂瓟 `./test2/server.c ./test2/client.c`
+
+ ### 璇锋眰搴旂瓟妯″紡
+ 
+ `source ./demo/server.c`
+ 
+
+ 
+ **杩愯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绔緭鍑烘敹鍒扮殑璁㈤槄淇℃伅
 
 ## 鎺ュ彛璇存槑
+```
 
+/**
+ * 鍒涘缓socket
+ * @return socket鍦板潃
+*/
+void *mod_open_socket(int mod);
+
+/**
+ * 鍏抽棴socket
+*/
+int 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);
+
+/**
+ * 鍙戦�佷俊鎭�
+ * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜
+ */
+int mod_send(void * _socket, const void *buf, const int size);
+
+/**
+ * 鎺ユ敹淇℃伅
+ * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜
+*/
+int mod_recv(void * _socket, void **buf, int *size) ;
+
+/**
+ * 閲婃斁鎺ユ敹淇℃伅鐨刡uf
+ */
+void mod_free(void *buf);
+
+
+/**
+ * 鑾峰彇soket绔彛鍙�
+ */
+int mod_get_socket_port(void * _socket);
+```
 
  
diff --git a/demo/Makefile b/demo/Makefile
new file mode 100644
index 0000000..a80c730
--- /dev/null
+++ b/demo/Makefile
@@ -0,0 +1,32 @@
+#
+# Makefile for common library.
+#
+ROOT=..
+LDLIBS+=-Wl,-rpath=$(ROOT)/queue:$(ROOT)/lib
+# 寮�婧愬伐鍏峰寘璺緞
+LDDIR += -L$(ROOT)/queue
+# 寮�婧愬伐鍏峰寘
+LDLIBS += -lshm_queue -lusgcommon -lpthread
+
+INCLUDE += -I$(ROOT)/queue/ -I$(ROOT)/queue/include
+
+PLATFORM=$(shell $(ROOT)/systype.sh)
+include $(ROOT)/Make.defines.$(PLATFORM)
+
+
+PROGS =	req_rep pub_sub
+
+
+build: $(PROGS)
+
+# test1: $(LIBCOMMON)
+
+# 濡傛灉鍖匒 寮曠敤鍖匓锛� B 瑕佹斁鍦� A 鍚庨潰
+  
+clean:
+	rm -f $(TEMPFILES) $(PROGS)
+
+
+
+$(LIBQUEUE):
+	(cd $(ROOT)/queue && $(MAKE))
\ No newline at end of file
diff --git a/demo/pub_sub b/demo/pub_sub
new file mode 100755
index 0000000..d5a1b21
--- /dev/null
+++ b/demo/pub_sub
Binary files differ
diff --git a/demo/pub_sub.c b/demo/pub_sub.c
new file mode 100644
index 0000000..78aff69
--- /dev/null
+++ b/demo/pub_sub.c
@@ -0,0 +1,57 @@
+#include "mod_socket.h"
+#include "shm_mm.h"
+#include "usg_common.h"
+
+
+void server(int port) {
+	void *socket = mod_open_socket(PUB_SUB);
+	mod_socket_bind(socket, port);
+	mod_listen(socket);
+	int size;
+	void *recvbuf;
+	char sendbuf[512];
+	while(true) {
+		printf("璇疯緭鍏ュ彂甯冩秷鎭�:");
+		scanf("%s", sendbuf);
+		mod_send(socket, sendbuf, strlen(sendbuf)+1) ;
+		free(recvbuf);
+
+	}
+	mod_close_socket(socket);
+}
+
+void client(int port) {
+	void *socket = mod_open_socket(PUB_SUB);
+	mod_connect(socket, port);
+	int size;
+	void *recvbuf;
+ 
+	while(mod_recv(socket, &recvbuf, &size) == 0) {
+		printf("鏀跺埌璁㈤槄娑堟伅: %s\n", (char *)recvbuf);
+		free(recvbuf);
+
+	}
+	mod_close_socket(socket);
+}
+
+int main(int argc, char *argv[]) {
+  shm_init(512);
+  int port;
+  if (argc < 3) {
+  	 fprintf(stderr, "Usage: reqrep %s|%s <PORT> ...\n", "server", "client");
+  	 return 1;
+  }
+
+  port = atoi(argv[2]);
+
+  if (strcmp("server", argv[1]) == 0 ) {
+     server(port);
+  }
+
+  if (strcmp("client", argv[1]) == 0)
+     client(port);
+   
+ shm_destroy();
+ // fprintf(stderr, "Usage: reqrep %s|%s <URL> ...\n", "server", "client");
+  return 0;
+}
\ No newline at end of file
diff --git a/demo/req_rep b/demo/req_rep
new file mode 100755
index 0000000..2902e29
--- /dev/null
+++ b/demo/req_rep
Binary files differ
diff --git a/demo/req_rep.c b/demo/req_rep.c
new file mode 100644
index 0000000..5ae3133
--- /dev/null
+++ b/demo/req_rep.c
@@ -0,0 +1,60 @@
+#include "mod_socket.h"
+#include "shm_mm.h"
+#include "usg_common.h"
+
+void server(int port) {
+  void *socket = mod_open_socket(REQ_REP);
+  mod_socket_bind(socket, port);
+  mod_listen(socket);
+  int size;
+  void *recvbuf;
+  char sendbuf[512];
+  int rv;
+  while ( (rv = mod_recv(socket, &recvbuf, &size) ) == 0) {
+    sprintf(sendbuf, "SERVER RECEIVED: %s", recvbuf);
+    puts(sendbuf);
+    mod_send(socket, sendbuf, strlen(sendbuf) + 1);
+    free(recvbuf);
+  }
+  mod_close_socket(socket);
+}
+
+void client(int port) {
+  void *socket = mod_open_socket(REQ_REP);
+  mod_connect(socket, port);
+  int size;
+  void *recvbuf;
+  char sendbuf[512];
+  while (true) {
+    printf("request: ");
+    scanf("%s", sendbuf);
+    mod_send(socket, sendbuf, strlen(sendbuf) + 1);
+    mod_recv(socket, &recvbuf, &size);
+    printf("reply: %s\n", (char *)recvbuf);
+    free(recvbuf);
+  }
+  mod_close_socket(socket);
+}
+
+ 
+
+int main(int argc, char *argv[]) {
+  shm_init(512);
+  int port;
+  if (argc < 3) {
+    fprintf(stderr, "Usage: reqrep %s|%s <PORT> ...\n", "server", "client");
+    return 1;
+  }
+
+  port = atoi(argv[2]);
+
+  if (strcmp("server", argv[1]) == 0) {
+    server(port);
+  }
+
+  if (strcmp("client", argv[1]) == 0)
+    client(port);
+
+  
+  return 0;
+}
\ No newline at end of file
diff --git a/queue/include/mod_socket.h b/queue/include/mod_socket.h
index 79c86c5..21498ee 100644
--- a/queue/include/mod_socket.h
+++ b/queue/include/mod_socket.h
@@ -17,25 +17,58 @@
 	
 };
 
-
+/**
+ * 鍒涘缓socket
+ * @return socket鍦板潃
+*/
 void *mod_open_socket(int mod);
 
+/**
+ * 鍏抽棴socket
+*/
 int 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);
 
+/**
+ * 鍙戦�佷俊鎭�
+ * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜
+ */
 int mod_send(void * _socket, const void *buf, const int size);
 
+/**
+ * 鎺ユ敹淇℃伅
+ * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜
+*/
 int mod_recv(void * _socket, void **buf, int *size) ;
 
+/**
+ * 閲婃斁鎺ユ敹淇℃伅鐨刡uf
+ */
 void mod_free(void *buf);
 
+
+/**
+ * 鑾峰彇soket绔彛鍙�
+ */
+int mod_get_socket_port(void * _socket);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/queue/include/shm_mm.h b/queue/include/shm_mm.h
index 08a839b..b32568e 100644
--- a/queue/include/shm_mm.h
+++ b/queue/include/shm_mm.h
@@ -5,11 +5,18 @@
 extern "C" {
 #endif
 	
+/**
+ * 鍒濆鍖栧叡浜唴瀛�
+ * @size 鍏变韩鍐呭瓨澶у皬, 鍗曚綅M
+ * 
+ */
 void shm_init(int size);
-void shm_destroy() ;
 
-
-
+/**
+ * 閿�姣佸叡浜唴瀛�
+ * 鏁翠釜杩涚▼閫�鍑烘椂闇�瑕佹墽琛岃繖涓柟娉曪紝璇ユ柟娉曢鍏堜細妫�鏌ユ槸鍚﹁繕鏈夊叾浠栬繘绋嬪湪浣跨敤璇ュ叡浜唴瀛橈紝濡傛灉杩樻湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ氨鍙槸detach,濡傛灉娌℃湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ垯閿�姣佹暣鍧楀唴瀛樸��
+ */
+void shm_destroy();
 
 #ifdef __cplusplus
 }
diff --git a/queue/include/shm_socket.h b/queue/include/shm_socket.h
index cb09e25..8b14f06 100644
--- a/queue/include/shm_socket.h
+++ b/queue/include/shm_socket.h
@@ -52,23 +52,7 @@
 } shm_socket_t;
 
 
-/**
- * 鍒濆鍖栧叡浜唴瀛�
- * @size 鍏变韩鍐呭瓨澶у皬, 鍗曚綅M
- * 
- */
-void shm_init(int size);
 
-/**
- * 閿�姣佸叡浜唴瀛�
- * 鏁翠釜杩涚▼閫�鍑烘椂闇�瑕佹墽琛岃繖涓柟娉曪紝璇ユ柟娉曢鍏堜細妫�鏌ユ槸鍚﹁繕鏈夊叾浠栬繘绋嬪湪浣跨敤璇ュ叡浜唴瀛橈紝濡傛灉杩樻湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ氨鍙槸detach,濡傛灉娌℃湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ垯閿�姣佹暣鍧楀唴瀛樸��
- */
-void shm_destroy();
-
-/**
- * 閲婃斁recv鏂规硶鍒嗛厤鐨刡uf
- */
-void shm_free(void *buf);
 
 shm_socket_t *shm_open_socket();
 
diff --git a/queue/mod_socket.c b/queue/mod_socket.c
index a63c37d..cc358f6 100644
--- a/queue/mod_socket.c
+++ b/queue/mod_socket.c
@@ -55,6 +55,11 @@
 	return rv;
 }
 
+int mod_get_socket_port(void * _socket) {
+	mod_socket_t * socket = (mod_socket_t *) _socket;
+	return socket->shm_socket->port;
+}
+
 
 int mod_socket_bind(void * _socket, int port){
 	mod_socket_t * socket = (mod_socket_t *) _socket;

--
Gitblit v1.8.0