diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..0e40fe8f57160b43f9ea8e200b1a5d9f91f4aed9 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ + +# Default ignored files +/workspace.xml \ No newline at end of file diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000000000000000000000000000000000000..b93285816210f90b359d47c5da4f63d99a362113 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +callJvmThreadpool \ No newline at end of file diff --git a/.idea/CallJvm.iml b/.idea/CallJvm.iml new file mode 100644 index 0000000000000000000000000000000000000000..f08604bb65b25149b195f9e9f282f9683a428592 --- /dev/null +++ b/.idea/CallJvm.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000000000000000000000000000000000000..578add888547903256f6cc106882599729267e93 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000000000000000000000000000000000000..e8717964c5f3d547f60556a89229dadd9ece95ce --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000000000000000000000000000000000000..c8278a2148d8c7114c0a04bdfdbb2c5f2afa8311 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000000000000000000000000000000000000..94a25f7f4cb416c083d265558da75d457237d671 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/callJvmThreadpool/a.out b/callJvmThreadpool/a.out new file mode 100755 index 0000000000000000000000000000000000000000..6239af60c4dc9142c0d2e8f842b5350d15da7047 Binary files /dev/null and b/callJvmThreadpool/a.out differ diff --git a/callJvmThreadpool/client b/callJvmThreadpool/client new file mode 100755 index 0000000000000000000000000000000000000000..404a06723ec4b0c4bed071d850ecca10056748c4 Binary files /dev/null and b/callJvmThreadpool/client differ diff --git a/callJvmThreadpool/client.cpp b/callJvmThreadpool/client.cpp index 762975927f829558e7c09962e7a28d5b43d52e23..51a1abe3f736ca2b7524e859a7c41179457e753f 100644 --- a/callJvmThreadpool/client.cpp +++ b/callJvmThreadpool/client.cpp @@ -13,15 +13,15 @@ int main() { - std::string plainsql, dbname; - int sock = 0, valread; + std::string plainsql, dbname, sendstream; + int sock = 0; struct sockaddr_in serv_addr; - plainsql = "select * from test;"; - char *psql = (char*)plainsql.data(); + plainsql = "select * from test"; dbname = "student"; - char *dbn = (char*)dbname.data(); - char split = '$'; + sendstream = plainsql + "$" + dbname; + char *sstr = (char*)sendstream.data(); + printf("sendstream is %s\n", sstr); char buffer[1024] = {0}; if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) @@ -46,12 +46,21 @@ int main() return -1; } - send(sock, psql, strlen(psql), 0); - printf("Hello message: %s sent\n", psql); - send(sock, reinterpret_cast(split), 1, 0); - send(sock, dbn, strlen(dbn), 0); - printf("Talk message: %s send\n", dbn); + send(sock, sstr, strlen(sstr), 0); + printf("Hello message: %s sent\n", sstr); - valread = read(sock, buffer, 1024); + read(sock, buffer, 1024); printf("%s\n", buffer); -} \ No newline at end of file +} + +int i; +for(i = 0; i < strlen(buffer); i++) +{ +if(buffer[i] == '$') +{ +strncpy(psql, buffer, i); +strncpy(dbn, buffer + i + 1, strlen(buffer) - i - 1); +} +} +printf("%s\n", psql); +printf("%s\n", dbn); diff --git a/callJvmThreadpool/server b/callJvmThreadpool/server new file mode 100755 index 0000000000000000000000000000000000000000..0839b945bc1dfaca2b665387226ad3d6e2826746 Binary files /dev/null and b/callJvmThreadpool/server differ diff --git a/callJvmThreadpool/server.cpp b/callJvmThreadpool/server.cpp index 31ab0f1889e2b1a887734fb82e9bd3886dbe8585..f453079b8caac626f843b02f3dca98074a22861f 100644 --- a/callJvmThreadpool/server.cpp +++ b/callJvmThreadpool/server.cpp @@ -1,7 +1,3 @@ -// -// Created by wanhui on 11/2/19. -// - #include #include #include @@ -9,69 +5,82 @@ #include #include #include +#include #define PORT 8080 -int main() { +int main(int argc, char const *argv[]) +{ int server_fd, new_socket, valread; struct sockaddr_in address; int opt = 1; int addrlen = sizeof(address); char buffer[1024] = {0}; - char *psql = nullptr; - char *dbn = nullptr; char *hello = "Hello from server"; // Creating socket file descriptor - if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { + if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) + { perror("socket failed"); exit(EXIT_FAILURE); } // Forcefully attaching socket to the port 8080 if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, - &opt, sizeof(opt))) { + &opt, sizeof(opt))) + { perror("setsockopt"); exit(EXIT_FAILURE); } address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; - address.sin_port = htons(PORT); + address.sin_port = htons( PORT ); // Forcefully attaching socket to the port 8080 - if (bind(server_fd, (struct sockaddr *) &address, - sizeof(address)) < 0) { + if (bind(server_fd, (struct sockaddr *)&address, + sizeof(address))<0) + { perror("bind failed"); exit(EXIT_FAILURE); } - if (listen(server_fd, 3) < 0) { + if (listen(server_fd, 3) < 0) + { perror("listen"); exit(EXIT_FAILURE); } - if ((new_socket = accept(server_fd, (struct sockaddr *) &address, - (socklen_t *) &addrlen)) < 0) { + if ((new_socket = accept(server_fd, (struct sockaddr *)&address, + (socklen_t*)&addrlen))<0) + { perror("accept"); exit(EXIT_FAILURE); } - valread = read(new_socket, buffer, 1024); - printf("%s\n", buffer); + valread = read( new_socket , buffer, 1024); + printf("%s\n",buffer ); - int i; - for(i = 0; i < strlen(buffer); i++) + send(new_socket , hello , strlen(hello) , 0 ); + printf("Hello message sent\n"); + + char* psql; + char* dbn; + char delims[] = "$"; + char *res = nullptr; + std::vector resvec; + + printf("%zu\n", strlen(buffer)); + + res = strtok(buffer, delims); + while (res != nullptr) { - if(buffer[i] == '$') - { - strncpy(psql, buffer, i); - strncpy(dbn, buffer + i + 1, strlen(buffer) - i - 1); - } + resvec.push_back(res); + res = strtok(nullptr, delims); } + + psql = resvec[0]; + dbn = resvec[1]; printf("%s\n", psql); printf("%s\n", dbn); - - send(new_socket, hello, strlen(hello), 0); - printf("Hello message sent\n"); return 0; } \ No newline at end of file