From 5c9cbf5ea152f501ae976e0e0b4ef5ee98afdfba Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期四, 11 六月 2020 19:20:40 +0800
Subject: [PATCH] pdate

---
 service/client.c |   55 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 52 insertions(+), 3 deletions(-)

diff --git a/service/client.c b/service/client.c
index 49d379d..170e788 100644
--- a/service/client.c
+++ b/service/client.c
@@ -6,6 +6,7 @@
 #include <nng/protocol/reqrep0/rep.h>
 #include <nng/protocol/reqrep0/req.h>
 const char *url = "tcp://127.0.0.1:8899";
+const char *localUrl = "tcp://127.0.0.1:9988";
 void
 fatal(const char *func, int rv)
 {
@@ -30,7 +31,7 @@
 
     std::string str = request.toStyledString();
 
-    if ((rv = nng_send(sock, strdupa(str.c_str()), str.length(), 0)) != 0) {
+    if ((rv = nng_send(sock, strdup(str.c_str()), str.length(), 0)) != 0) {
 		fatal("nng_send", rv);
 	}
 	if ((rv = nng_recv(sock, &buf, &sz, NNG_FLAG_ALLOC)) != 0) {
@@ -119,10 +120,58 @@
 }
 
 int
+server()
+{
+	nng_socket sock;
+	int        rv;
+
+	if ((rv = nng_rep0_open(&sock)) != 0) {
+		fatal("nng_rep0_open", rv);
+	}
+	if ((rv = nng_listen(sock, localUrl, NULL, 0)) != 0) {
+		fatal("nng_listen", rv);
+	}
+	for (;;) {
+		char *   buf = NULL;
+		size_t   sz;
+		if ((rv = nng_recv(sock, &buf, &sz, NNG_FLAG_ALLOC)) != 0) {
+			fatal("nng_recv", rv);
+		}
+		std::cout << buf << std::endl;
+
+		Json::Value response;
+		response["code"] = 0;
+		std::string str = response.toStyledString();
+		rv = nng_send(sock, strdup(str.c_str()), str.length(), NNG_FLAG_ALLOC);
+		if (rv != 0) {
+			fatal("nng_send", rv);
+		}
+		// if ((sz == sizeof(uint64_t)) &&
+		//     ((GET64(buf, val)) == DATECMD)) {
+		// 	time_t now;
+		// 	printf("SERVER: RECEIVED DATE REQUEST\n");
+		// 	now = time(&now);
+		// 	printf("SERVER: SENDING DATE: ");
+		// 	showdate(now);
+
+		// 	// Reuse the buffer.  We know it is big enough.
+		// 	PUT64(buf, (uint64_t) now);
+			
+		// 	continue;
+		// }
+		// Unrecognized command, so toss the buffer.
+		//nng_free(buf, sz);
+	}
+}
+
+
+int
 main(const int argc, const char **argv)
 {
-	if ((argc > 1))
-		return (client(argv[1]));
+	if ((argc > 1)) {
+	  client(argv[1]);
+	  server();
+	}
 	// std::string str("123");
 	// char *str2="123";
 	// printf("str length  %d, %d\n", str.length(), strlen(str2));

--
Gitblit v1.8.0