提交 90f592b6 编写于 作者: X xwhqsj

add socket around ...

上级 64337397
......@@ -17,7 +17,8 @@ add_executable(main jni.h jni_md.h tpool.cpp tpool.h
# main.cpp
# multithread.cpp
threadpool.cpp
)
client.cpp
server.cpp)
target_link_libraries(main /usr/local/java/jre/lib/amd64/server/libjvm.so /usr/lib/x86_64-linux-gnu/libpthread.so)
//
// Created by wanhui on 11/2/19.
//
#include <cstdio>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <cstring>
#include <iostream>
#define PORT 8080
int main()
{
std::string plainsql, dbname;
int sock = 0, valread;
struct sockaddr_in serv_addr;
plainsql = "select * from test;";
char *psql = (char*)plainsql.data();
dbname = "student";
char *dbn = (char*)dbname.data();
char split = '$';
char buffer[1024] = {0};
if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
printf("\n Socket creation error\n");
return -1;
}
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(PORT);
// convert IPV4 and IPV6 addresses from text to binary form
if(inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0)
{
printf("\n Invalid address/ Address not supported\n");
return -1;
}
if(connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
{
printf("\nConnection Failed\n");
return -1;
}
send(sock, psql, strlen(psql), 0);
printf("Hello message: %s sent\n", psql);
send(sock, reinterpret_cast<const void *>(split), 1, 0);
send(sock, dbn, strlen(dbn), 0);
printf("Talk message: %s send\n", dbn);
valread = read(sock, buffer, 1024);
printf("%s\n", buffer);
}
\ No newline at end of file
......@@ -11,90 +11,22 @@ set(CMAKE_MAKEFILE_DEPENDS
"CMakeFiles/3.14.5/CMakeCCompiler.cmake"
"CMakeFiles/3.14.5/CMakeCXXCompiler.cmake"
"CMakeFiles/3.14.5/CMakeSystem.cmake"
"CMakeFiles/feature_tests.c"
"CMakeFiles/feature_tests.cxx"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCCompiler.cmake.in"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCCompilerABI.c"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCInformation.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCXXCompiler.cmake.in"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCXXCompilerABI.cpp"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCXXInformation.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCommonLanguageInclude.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCompilerIdDetection.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeDetermineCCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeDetermineCXXCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeDetermineCompileFeatures.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeDetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeDetermineCompilerABI.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeDetermineCompilerId.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeDetermineSystem.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeFindBinUtils.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeFindCodeBlocks.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeGenericSystem.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeInitializeConfigs.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeLanguageInformation.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeParseImplicitIncludeInfo.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeParseImplicitLinkInfo.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeSystem.cmake.in"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeSystemSpecificInformation.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeSystemSpecificInitialize.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeTestCCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeTestCXXCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeTestCompilerCommon.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeUnixFindMake.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/ADSP-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/ARMCC-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/AppleClang-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Borland-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Bruce-C-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Clang-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Clang-DetermineCompilerInternal.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Compaq-C-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Cray-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Embarcadero-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Fujitsu-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GHS-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GNU-C-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GNU-C-FeatureTests.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GNU-C.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GNU-CXX-FeatureTests.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GNU-CXX.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GNU-FindBinUtils.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GNU.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/HP-C-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/HP-CXX-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/IAR-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Intel-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/MIPSpro-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/MSVC-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/NVIDIA-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/PGI-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/PathScale-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/SCO-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/SDCC-C-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/SunPro-C-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/TI-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Watcom-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/XL-C-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/XL-CXX-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/zOS-C-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Internal/CMakeCheckCompilerFlag.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Internal/FeatureTesting.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Platform/Linux-Determine-CXX.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Platform/Linux-GNU-C.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Platform/Linux-GNU-CXX.cmake"
"/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Platform/Linux-GNU.cmake"
......@@ -111,11 +43,6 @@ set(CMAKE_MAKEFILE_OUTPUTS
# Byproducts of CMake generate step:
set(CMAKE_MAKEFILE_PRODUCTS
"CMakeFiles/3.14.5/CMakeSystem.cmake"
"CMakeFiles/3.14.5/CMakeCCompiler.cmake"
"CMakeFiles/3.14.5/CMakeCXXCompiler.cmake"
"CMakeFiles/3.14.5/CMakeCCompiler.cmake"
"CMakeFiles/3.14.5/CMakeCXXCompiler.cmake"
"CMakeFiles/CMakeDirectoryInformation.cmake"
)
......
......@@ -71,7 +71,7 @@ CMAKE_BINARY_DIR = /home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug
CMakeFiles/main.dir/all:
$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/depend
$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/build
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles --progress-num=1,2,3 "Built target main"
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles --progress-num=1,2,3,4,5 "Built target main"
.PHONY : CMakeFiles/main.dir/all
# Include target in all.
......@@ -81,7 +81,7 @@ all: CMakeFiles/main.dir/all
# Build rule for subdir invocation for target.
CMakeFiles/main.dir/rule: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles 3
$(CMAKE_COMMAND) -E cmake_progress_start /home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles 5
$(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/main.dir/all
$(CMAKE_COMMAND) -E cmake_progress_start /home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles 0
.PHONY : CMakeFiles/main.dir/rule
......
/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/bin/cmake -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - Unix Makefiles" /home/wanhui/CallJvm/callJvmThreadpool
-- The C compiler identification is GNU 7.4.0
-- The CXX compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug
......@@ -6,27 +6,17 @@
#IncludeRegexTransform:
/home/wanhui/CallJvm/callJvmThreadpool/threadpool.cpp
unistd.h
/home/wanhui/CallJvm/callJvmThreadpool/client.cpp
stdio.h
-
cstdlib
sys/socket.h
-
jni.h
arpa/inet.h
-
tpool.h
/home/wanhui/CallJvm/callJvmThreadpool/tpool.h
/home/wanhui/CallJvm/callJvmThreadpool/tpool.h
pthread.h
unistd.h
-
/usr/local/java/include/jni.h
stdio.h
string.h
-
stdarg.h
iostream
-
jni_md.h
/usr/local/java/include/jni_md.h
/usr/local/java/include/linux/jni_md.h
......@@ -4,6 +4,8 @@ set(CMAKE_DEPENDS_LANGUAGES
)
# The set of files for implicit dependencies of each language:
set(CMAKE_DEPENDS_CHECK_CXX
"/home/wanhui/CallJvm/callJvmThreadpool/client.cpp" "/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/client.cpp.o"
"/home/wanhui/CallJvm/callJvmThreadpool/server.cpp" "/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/server.cpp.o"
"/home/wanhui/CallJvm/callJvmThreadpool/threadpool.cpp" "/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/threadpool.cpp.o"
"/home/wanhui/CallJvm/callJvmThreadpool/tpool.cpp" "/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/tpool.cpp.o"
)
......
......@@ -83,21 +83,51 @@ CMakeFiles/main.dir/threadpool.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/main.dir/threadpool.cpp.s"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/wanhui/CallJvm/callJvmThreadpool/threadpool.cpp -o CMakeFiles/main.dir/threadpool.cpp.s
CMakeFiles/main.dir/client.cpp.o: CMakeFiles/main.dir/flags.make
CMakeFiles/main.dir/client.cpp.o: ../client.cpp
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object CMakeFiles/main.dir/client.cpp.o"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/main.dir/client.cpp.o -c /home/wanhui/CallJvm/callJvmThreadpool/client.cpp
CMakeFiles/main.dir/client.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/main.dir/client.cpp.i"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/wanhui/CallJvm/callJvmThreadpool/client.cpp > CMakeFiles/main.dir/client.cpp.i
CMakeFiles/main.dir/client.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/main.dir/client.cpp.s"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/wanhui/CallJvm/callJvmThreadpool/client.cpp -o CMakeFiles/main.dir/client.cpp.s
CMakeFiles/main.dir/server.cpp.o: CMakeFiles/main.dir/flags.make
CMakeFiles/main.dir/server.cpp.o: ../server.cpp
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object CMakeFiles/main.dir/server.cpp.o"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/main.dir/server.cpp.o -c /home/wanhui/CallJvm/callJvmThreadpool/server.cpp
CMakeFiles/main.dir/server.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/main.dir/server.cpp.i"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/wanhui/CallJvm/callJvmThreadpool/server.cpp > CMakeFiles/main.dir/server.cpp.i
CMakeFiles/main.dir/server.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/main.dir/server.cpp.s"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/wanhui/CallJvm/callJvmThreadpool/server.cpp -o CMakeFiles/main.dir/server.cpp.s
# Object files for target main
main_OBJECTS = \
"CMakeFiles/main.dir/tpool.cpp.o" \
"CMakeFiles/main.dir/threadpool.cpp.o"
"CMakeFiles/main.dir/threadpool.cpp.o" \
"CMakeFiles/main.dir/client.cpp.o" \
"CMakeFiles/main.dir/server.cpp.o"
# External object files for target main
main_EXTERNAL_OBJECTS =
main: CMakeFiles/main.dir/tpool.cpp.o
main: CMakeFiles/main.dir/threadpool.cpp.o
main: CMakeFiles/main.dir/client.cpp.o
main: CMakeFiles/main.dir/server.cpp.o
main: CMakeFiles/main.dir/build.make
main: /usr/local/java/jre/lib/amd64/server/libjvm.so
main: /usr/lib/x86_64-linux-gnu/libpthread.so
main: CMakeFiles/main.dir/link.txt
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Linking CXX executable main"
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Linking CXX executable main"
$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/main.dir/link.txt --verbose=$(VERBOSE)
# Rule to build all files generated by this target.
......
file(REMOVE_RECURSE
"CMakeFiles/main.dir/tpool.cpp.o"
"CMakeFiles/main.dir/threadpool.cpp.o"
"CMakeFiles/main.dir/client.cpp.o"
"CMakeFiles/main.dir/server.cpp.o"
"main.pdb"
"main"
)
......
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.14
CMakeFiles/main.dir/threadpool.cpp.o
/home/wanhui/CallJvm/callJvmThreadpool/threadpool.cpp
/home/wanhui/CallJvm/callJvmThreadpool/tpool.h
/usr/local/java/include/jni.h
/usr/local/java/include/linux/jni_md.h
CMakeFiles/main.dir/client.cpp.o
/home/wanhui/CallJvm/callJvmThreadpool/client.cpp
CMakeFiles/main.dir/tpool.cpp.o
/home/wanhui/CallJvm/callJvmThreadpool/tpool.cpp
/home/wanhui/CallJvm/callJvmThreadpool/tpool.h
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.14
CMakeFiles/main.dir/threadpool.cpp.o: ../threadpool.cpp
CMakeFiles/main.dir/threadpool.cpp.o: ../tpool.h
CMakeFiles/main.dir/threadpool.cpp.o: /usr/local/java/include/jni.h
CMakeFiles/main.dir/threadpool.cpp.o: /usr/local/java/include/linux/jni_md.h
CMakeFiles/main.dir/client.cpp.o: ../client.cpp
CMakeFiles/main.dir/tpool.cpp.o: ../tpool.cpp
CMakeFiles/main.dir/tpool.cpp.o: ../tpool.h
......
/usr/bin/c++ -g CMakeFiles/main.dir/tpool.cpp.o CMakeFiles/main.dir/threadpool.cpp.o -o main -Wl,-rpath,/usr/local/java/jre/lib/amd64/server /usr/local/java/jre/lib/amd64/server/libjvm.so -lpthread
/usr/bin/c++ -g CMakeFiles/main.dir/tpool.cpp.o CMakeFiles/main.dir/threadpool.cpp.o CMakeFiles/main.dir/client.cpp.o CMakeFiles/main.dir/server.cpp.o -o main -Wl,-rpath,/usr/local/java/jre/lib/amd64/server /usr/local/java/jre/lib/amd64/server/libjvm.so -lpthread
CMAKE_PROGRESS_1 = 1
CMAKE_PROGRESS_2 = 2
CMAKE_PROGRESS_3 = 3
CMAKE_PROGRESS_4 = 4
CMAKE_PROGRESS_5 = 5
......@@ -123,6 +123,60 @@ main/fast:
$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/build
.PHONY : main/fast
client.o: client.cpp.o
.PHONY : client.o
# target to build an object file
client.cpp.o:
$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/client.cpp.o
.PHONY : client.cpp.o
client.i: client.cpp.i
.PHONY : client.i
# target to preprocess a source file
client.cpp.i:
$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/client.cpp.i
.PHONY : client.cpp.i
client.s: client.cpp.s
.PHONY : client.s
# target to generate assembly for a file
client.cpp.s:
$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/client.cpp.s
.PHONY : client.cpp.s
server.o: server.cpp.o
.PHONY : server.o
# target to build an object file
server.cpp.o:
$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/server.cpp.o
.PHONY : server.cpp.o
server.i: server.cpp.i
.PHONY : server.i
# target to preprocess a source file
server.cpp.i:
$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/server.cpp.i
.PHONY : server.cpp.i
server.s: server.cpp.s
.PHONY : server.s
# target to generate assembly for a file
server.cpp.s:
$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/server.cpp.s
.PHONY : server.cpp.s
threadpool.o: threadpool.cpp.o
.PHONY : threadpool.o
......@@ -186,6 +240,12 @@ help:
@echo "... rebuild_cache"
@echo "... main"
@echo "... edit_cache"
@echo "... client.o"
@echo "... client.i"
@echo "... client.s"
@echo "... server.o"
@echo "... server.i"
@echo "... server.s"
@echo "... threadpool.o"
@echo "... threadpool.i"
@echo "... threadpool.s"
......
......@@ -96,12 +96,18 @@
</MakeCommands>
</Target>
</Build>
<Unit filename="/home/wanhui/CallJvm/callJvmThreadpool/client.cpp">
<Option target="main"/>
</Unit>
<Unit filename="/home/wanhui/CallJvm/callJvmThreadpool/jni.h">
<Option target="main"/>
</Unit>
<Unit filename="/home/wanhui/CallJvm/callJvmThreadpool/jni_md.h">
<Option target="main"/>
</Unit>
<Unit filename="/home/wanhui/CallJvm/callJvmThreadpool/server.cpp">
<Option target="main"/>
</Unit>
<Unit filename="/home/wanhui/CallJvm/callJvmThreadpool/threadpool.cpp">
<Option target="main"/>
</Unit>
......
//
// Created by wanhui on 11/2/19.
//
#include <unistd.h>
#include <cstdio>
#include <sys/socket.h>
#include <cstdlib>
#include <netinet/in.h>
#include <cstring>
#include <iostream>
#define PORT 8080
int main() {
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) {
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))) {
perror("setsockopt");
exit(EXIT_FAILURE);
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(PORT);
// Forcefully attaching socket to the port 8080
if (bind(server_fd, (struct sockaddr *) &address,
sizeof(address)) < 0) {
perror("bind failed");
exit(EXIT_FAILURE);
}
if (listen(server_fd, 3) < 0) {
perror("listen");
exit(EXIT_FAILURE);
}
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);
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);
send(new_socket, hello, strlen(hello), 0);
printf("Hello message sent\n");
return 0;
}
\ No newline at end of file
......@@ -2,22 +2,106 @@
// Created by wanhui on 10/12/19.
//
#include <unistd.h>
#include <cstdio>
#include <cstdlib>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <iostream>
#include <jni.h>
#include "tpool.h"
#define NUM_THREADS 6
#define PORT 8080
struct JVM {
JavaVM *jvm;
};
void invoke_class(JNIEnv* env);
void* jvmThreads(void *myJvm)
void *jvmThreads(void *myJvm, char* plainsql, char* dbname);
JNIEnv *create_vm(struct JVM *jvm);
void invoke_class(JNIEnv* env, std::string str1, std::string str2);
int socket_init();
void* handle_stream(void* myJvm, void* arg);
void* handle_stream(void* myJvm, void* arg)
{
int server_fd = (int&)arg;
char buf[1024];
char* psql;
char* dbn;
read(server_fd, buf, 1024);
printf("%s\n", buf);
int i;
for(i = 0; i < strlen(buf); i++)
{
if(buf[i] == '$')
{
strncpy(psql, buf, i);
strncpy(dbn, buf + i + 1, strlen(buf) - i - 1);
}
}
jvmThreads(arg, psql, dbn);
}
int socket_init()
{
int server_fd;
struct sockaddr_in address;
int opt = 1;
socklen_t addrlen = sizeof(address);
// crating socket file descriptor
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)))
{
perror("socketopt");
exit(EXIT_FAILURE);
}
address.sin_family = AF_INET;
// change the clients' address and port
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(PORT);
if(bind(server_fd, (struct sockaddr *)&address, addrlen) < 0)
{
perror("bind failed");
exit(EXIT_FAILURE);
}
if(listen(server_fd, 3) < 0)
{
perror("listen");
exit(EXIT_FAILURE);
}
return server_fd;
}
void* jvmThreads(void *myJvm, char* plainsql, char* dbname)
{
auto* myJvmptr = (struct JVM*) myJvm;
JavaVM *jvmPtr = myJvmptr->jvm;
......@@ -25,7 +109,7 @@ void* jvmThreads(void *myJvm)
JNIEnv* env = nullptr;
jvmPtr->AttachCurrentThread((void**)&(env), nullptr);
invoke_class(env);
invoke_class(env, plainsql, dbname);
jvmPtr->DetachCurrentThread();
return nullptr;
......@@ -55,7 +139,7 @@ JNIEnv *create_vm (struct JVM *jvm) {
}
void invoke_class (JNIEnv * env) {
void invoke_class (JNIEnv * env, char* plainsql, char* dbname) {
jclass Main_class;
jmethodID fun_id;
jmethodID static_id;
......@@ -80,9 +164,11 @@ void invoke_class (JNIEnv * env) {
// test generally function student()
hello_id = env->GetMethodID(Main_class, "<init>", "()V");
obj1 = env->NewObject(Main_class, hello_id);
jstring name = env->NewStringUTF("XWH");
jstring plainsqlstr = env->NewStringUTF(plainsql);
jstring dbnamestr = env->NewStringUTF(dbname);
stu_id = env->GetMethodID(Main_class, "student", "([Ljava/lang/String;)V");
env->CallObjectMethod(obj1, stu_id, name);
env->CallObjectMethod(obj1, stu_id, dbnamestr);
}
int main () {
......@@ -90,7 +176,10 @@ int main () {
JNIEnv *myEnv = create_vm (&myJvm);
if (myEnv == nullptr)
return 1;
{
printf("create_vm failed\n");
exit(1);
}
if(tpool_create(NUM_THREADS) != 0)
{
......@@ -98,15 +187,39 @@ int main () {
exit(1);
}
int i;
for(i = 0; i < 10; i++)
int sock = socket_init();
struct sockaddr_in address;
printf("listening...\n");
socklen_t len = sizeof(address);
// endless loop
while(true)
{
tpool_add_work(reinterpret_cast<void *(*)(void *)>(jvmThreads), reinterpret_cast<void *>(&myJvm));
int sock = accept(sock, (struct sockaddr*)&address, &len);
if(sock < 0)
{
perror("\nAccept Failed\n");
continue;
}
tpool_add_work(reinterpret_cast<void *(*)(void *)>(handle_stream), reinterpret_cast<void *>(&myJvm), (void *)sock);
}
sleep(2);
tpool_destroy();
myJvm.jvm->DestroyJavaVM ();
// only 10 tasks
// int i;
// for(i = 0; i < 10; i++)
// {
// tpool_add_work(reinterpret_cast<void *(*)(void *)>(jvmThreads), reinterpret_cast<void *>(&myJvm), );
// }
//
// sleep(2);
// tpool_destroy();
// myJvm.jvm->DestroyJavaVM ();
return 0;
}
......@@ -118,7 +118,7 @@ void tpool_destroy()
free(tpool);
}
int tpool_add_work(void*(*routine)(void*), void* arg)
int tpool_add_work(void*(*routine)(void*), void* arg, void* arg1)
{
tpool_work_t *work, *member;
......@@ -137,6 +137,7 @@ int tpool_add_work(void*(*routine)(void*), void* arg)
work->routine = routine;
work->arg = arg;
work->arg1 = arg1;
work->next = nullptr;
pthread_mutex_lock(&tpool->queue_lock);
......
......@@ -12,6 +12,7 @@ typedef struct tpool_work
{
void* (*routine)(void*);
void *arg;
void *arg1;
struct tpool_work *next;
} tpool_work_t;
......@@ -29,7 +30,7 @@ int tpool_create(int max_thr_num);
void tpool_destroy();
int tpool_add_work(void*(*routine)(void*), void* arg);
int tpool_add_work(void*(*routine)(void*), void* arg, void* arg1);
#endif //CALLJVMTHREADPOOL_TPOOL_H
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册