工程结构:
gRpcDemo
├── LICENSE
├── README.MD
├── cpp
│ ├── CMakeLists.txt
│ ├── build
│ └── client.cpp
├── proto
│ └── demo.proto
└── server
├── CMakeLists.txt
├── build
├── main.cpp
└── server.hpp
服务端使用 C++ 实现。
brew install grpc cmake openssl@1.1
cd gRpcDemo/server/
protoc --cpp_out=. -I=../proto demo.proto
执行 tree proto
,可见生成了两个 *.pb.*
文件:
proto
├── demo.pb.cc
├── demo.pb.h
└── demo.proto
cd gRpcDemo/server/
protoc --grpc_out=. --plugin=protoc-gen-grpc="/usr/local/bin/grpc_cpp_plugin" -I=../proto demo.proto
# 这里需要填写 grpc_cpp_plugin 的绝对路径。安装的时候有提示;也可以通过命令获取:
# which grpc_cpp_plugin
执行 tree proto
,可见生成了两个 *.grpc.pb.*
文件:
proto
├── demo.grpc.pb.cc
├── demo.grpc.pb.h
├── demo.pb.cc
├── demo.pb.h
└── demo.proto
新建 build 目录,进入该目录进行编译:
cd gRpcDemo/server/
mkdir build
cd build
export PKG_CONFIG_PATH="/usr/local/opt/openssl@1.1/lib/pkgconfig"
# 生成 Makefile
cmake .. # 注意这里有两个点,表示 CMakeLists.txt 在上层目录
# 编译
make
打开终端:
./server
cd gRpcDemo/cpp/
protoc --cpp_out=. -I=../proto demo.proto
protoc --grpc_out=. --plugin=protoc-gen-grpc="/usr/local/bin/grpc_cpp_plugin" -I=../proto demo.proto
新建 build 目录,进入该目录进行编译:
cd gRpcDemo/cpp/
mkdir build
cd build
export PKG_CONFIG_PATH="/usr/local/opt/openssl@1.1/lib/pkgconfig"
# 生成 Makefile
cmake .. # 注意这里有两个点,表示 CMakeLists.txt 在上层目录
# 编译
make
打开终端:
./client
- 配置环境:
cd gRpcDemo/python
python -m venv .env
source .env/bin/activate
pip install --upgrade pip
pip install grpcio grpcio-tools
- 生成相关文件:
cd gRpcDemo/python
python -m grpc_tools.protoc --python_out=. --grpc_python_out=. -I=../proto demo.proto
- 运行
# 启动客户端
python main.py
cd java/src/main/java/
protoc --java_out=. -I=../../../../proto demo.proto
protoc --grpc-java_out=. --plugin=protoc-gen-grpc-java="存放的路径/protoc-gen-grpc-java-1.49.2-osx-x86_64.exe" -I=../../../../proto demo.proto
Windows 下连接静态库,动态连接更简单,网上参考资料很多。
- 安装,参考Vcpkg: 总览。
cd C:\Tools
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
- 添加全局配置:
环境变量增加
vcpkg
所在路径(本文为:C:\Tools\vcpkg
)。
vcpkg install grpc:x86-windows-static
vcpkg install protobuf[zlib]:x86-windows-static
vcpkg integrate install
cd gRpcDemo/server/
protoc --cpp_out=. -I=../proto demo.proto
执行 tree .
,可见生成了两个 *.pb.*
文件:
.
├── demo.pb.cc
├── demo.pb.h
└── demo.proto
cd gRpcDemo/server/
protoc --grpc_out=. --plugin=protoc-gen-grpc="C:\Tools\vcpkg\packages\grpc_x64-windows\tools\grpc\grpc_cpp_plugin.exe" -I=../proto demo.proto
# 这里需要填写 grpc_cpp_plugin 的绝对路径,去 vcpkg 的安装目录下找。
执行 tree .
,可见生成了两个 *.grpc.pb.*
文件:
.
├── demo.grpc.pb.cc
├── demo.grpc.pb.h
├── demo.pb.cc
├── demo.pb.h
└── demo.proto
新建 build 目录,打开 Developer Command Prompt for VS 2019
,切换到 build
目录:
cd gRpcDemo/server/build
# 生成 Makefile(32位)
cmake -A Win32 -S .. -DVCPKG_TARGET_TRIPLET=x86-windows-static -DCMAKE_TOOLCHAIN_FILE=C:/Tools/vcpkg/scripts/buildsystems/vcpkg.cmake
# 生成 Makefile(64位)
# cmake -A x64 -S .. -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_TOOLCHAIN_FILE=C:/Tools/vcpkg/scripts/buildsystems/vcpkg.cmake
# 编译
cmake --build . --config Release
打开两个终端:
./server
如果出现中文乱码,将终端编码改成 UTF-8 即可。
cd gRpcDemo/cpp/
protoc --cpp_out=. -I=../proto demo.proto
protoc --grpc_out=. --plugin=protoc-gen-grpc="/usr/local/bin/grpc_cpp_plugin" -I=../proto demo.proto
新建 build 目录,打开 Developer Command Prompt for VS 2019
,切换到 build
目录:
cd gRpcDemo/cpp/build
# 生成 Makefile(32位)
cmake -A Win32 -S .. -DVCPKG_TARGET_TRIPLET=x86-windows-static -DCMAKE_TOOLCHAIN_FILE=C:/Tools/vcpkg/scripts/buildsystems/vcpkg.cmake
# 生成 Makefile(64位)
# cmake -A x64 -S .. -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_TOOLCHAIN_FILE=C:/Tools/vcpkg/scripts/buildsystems/vcpkg.cmake
# 编译
cmake --build . --config Release
打开终端:
./client
参考 1.4。
选择 32 位的 JDK temurin。
cd java/src/main/java/
protoc --java_out=. -I=../../../../proto demo.proto
protoc --grpc-java_out=. --plugin=protoc-gen-grpc-java="存放的路径/protoc-gen-grpc-java-1.49.2-windows-x86_32.exe" -I=../../../../proto demo.proto