#include "usg_common.h" #include "netdisk.h" #include "hcnetdisk.h" #include #include #include #include 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) { fprintf(stderr, "%s: %s\n", func, nng_strerror(rv)); exit(1); } void doLogin(nng_socket sock) { char * buf = NULL; int rv; size_t sz; Json::Value request; Json::Value arguments; arguments["loginUUID"] = "1"; arguments["deviceType"] = "HC"; arguments["username"] = "admin"; arguments["password"] = "a1234567"; arguments["host"] = "192.168.20.11"; arguments["port"] = 8000; request["method"] = "login"; request["arguments"]= arguments; std::string str = request.toStyledString(); 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) { fatal("nng_recv", rv); } std::cout << buf; nng_free(buf, sz); } void doDownloadByTime(nng_socket sock) { char * buf = NULL; int rv; size_t sz; Json::Value request; Json::Value arguments; arguments["loginUUID"] = "1"; Json::Value start; start["year"] = 2020; start["mon"] = 4; start["day"] = 10; start["hour"] = 14; start["min"] = 20; start["sec"] = 0; arguments["start"] = start; Json::Value end; end["year"] = 2020; end["mon"] = 4; end["day"] = 10; end["hour"] = 15; end["min"] = 20; end["sec"] = 0; arguments["end"] = end; arguments["channel"] = 1; arguments["destpath"] = "/home/basic/data/Downloads/test"; arguments["host"] = "192.168.20.11"; arguments["port"] = 8000; request["method"] = "downloadByTime"; request["arguments"]= arguments; std::string str = request.toStyledString(); 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) { fatal("nng_recv", rv); } std::cout << buf << std::endl; // Json::Reader jsonreader; // Json::Value response; // jsonreader.parse(buf, response); // std::cout << response["payload"]["filelist"][3]; nng_free(buf, sz); } int client(const char *method) { nng_socket sock; int rv; if ((rv = nng_req0_open(&sock)) != 0) { fatal("nng_socket", rv); } if ((rv = nng_dial(sock, url, NULL, 0)) != 0) { fatal("nng_dial", rv); } printf("CLIENT: SENDING DATE REQUEST\n"); if (strcmp(method, "login") == 0) { doLogin(sock); } else if (strcmp(method, "download") == 0) { doDownloadByTime(sock); } else { printf("Don't surpport %s \n", method); } nng_close(sock); return (0); } 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)) { client(argv[1]); server(); } // std::string str("123"); // char *str2="123"; // printf("str length %d, %d\n", str.length(), strlen(str2)); fprintf(stderr, "Usage: client ...\n"); return (1); }