Saya membuat implementasi c ++ 17 baru header-> json-rpc-cxx.
Menguasai
Kerangka kerja ini menyediakan dukungan lintas platform JSON-RPC (Remote Procedure Call) untuk C ++. Ini sepenuhnya kompatibel JSON-RPC 2.0 & 1.0.

5 Alasan bagus untuk menggunakan libjson-rpc-cpp di proyek RPC Anda berikutnya
Alasan bagus lainnya untuk menggunakan libjson-rpc-cpp
make test .
Debian (Stretch) dan Ubuntu (15.10 atau lebih baru)
sudo apt-get install libjsonrpccpp-dev libjsonrpccpp-toolsFedora
sudo dnf install libjson-rpc-cpp-devel libjson-rpc-cpp-toolsArch Linux
Untuk Arch Linux ada pkgbuild yang disediakan di AUR.
sudo aura -A libjson-rpc-cppGentoo Linux
sudo emerge dev-cpp/libjson-rpc-cppMac OS X.
Untuk OS X Paket BREW tersedia:
brew install libjson-rpc-cppWindows
Ada paket yang siap digunakan di sini. Cukup unduh Execute the Installer EXE.
UNIX
Untuk sistem berbasis Debian dan Arch GNU/Linux, semua dependensi tersedia melalui paket manajer. Untuk OS X semua dependensi tersedia dalam minuman
git clone https://github.com/cinemast/libjson-rpc-cpp.git
mkdir -p libjson-rpc-cpp/build
cd libjson-rpc-cpp/build
cmake .. && make
sudo make install
sudo ldconfig # only required for linuxItu saja!
Jika Anda tidak senang dengan itu, cukup hapus instalannya dari sistem Anda menggunakan (di dalam Bangun direktori):
sudo make uninstallBangun Opsi:
Konfigurasi default harus baik untuk sebagian besar sistem, tetapi di sini ada bendera kompilasi yang tersedia:
-DCOMPILE_TESTS=NO Menonaktifkan Suite Uji Unit.-DCOMPILE_STUBGEN=NO Menonaktifkan Membangun Stubenerator.-DCOMPILE_EXAMPLES=NO Menonaktifkan Contoh.-DHTTP_SERVER=NO menonaktifkan server web libmicrohttpd.-DHTTP_CLIENT=NO menonaktifkan klien curl.-DREDIS_SERVER=NO menonaktifkan konektor server Redis.-DREDIS_CLIENT=NO menonaktifkan konektor klien Redis.-DUNIX_DOMAIN_SOCKET_SERVER=YES Aktifkan konektor server soket domain unix.-DUNIX_DOMAIN_SOCKET_CLIENT=YES Aktifkan konektor klien soket domain unix.-DFILE_DESCRIPTOR_SERVER=NO menonaktifkan konektor server deskriptor file.-DFILE_DESCRIPTOR_CLIENT=NO menonaktifkan konektor klien deskriptor file.-DTCP_SOCKET_SERVER=NO menonaktifkan konektor server soket TCP.-DTCP_SOCKET_CLIENT=NO menonaktifkan konektor klien soket TCP. Contoh ini akan menunjukkan cara paling sederhana untuk membuat server dan klien RPC. Jika Anda hanya memerlukan server, abaikan langkah 4. Jika Anda hanya membutuhkan klien, abaikan langkah 3. Anda dapat menemukan semua sumber daya sampel ini di direktori src/examples repositori ini.
[
{
"name" : " sayHello " ,
"params" : {
"name" : " Peter "
},
"returns" : " Hello Peter "
},
{
"name" : " notifyServer "
}
]Jenis nilai pengembalian atau parameter ditentukan oleh literal yang ditetapkan untuk itu. Stubs yang dihasilkan akan menggunakan tipe "pengembalian" untuk memvalidasi respons. Dalam contoh ini Anda dapat melihat cara menentukan metode dan pemberitahuan.
Hubungi JSONRPCSTUB:
jsonrpcstub spec.json --cpp-server=AbstractStubServer --cpp-client=StubClient
mkdir -p gen
mv abstractstubserver.h gen
mv stubclient.h gen Ini menghasilkan AbstractStubServer dan kelas StubClient dan memindahkannya ke folder gen .
Perluas rintisan server abstrak dan terapkan semua metode virtual (abstrak) murni yang didefinisikan dalam spec.json .
Lihat SRC/Contoh/StubServer.cpp
Dalam fungsi utama server beton dipakai dan dimulai. Itu saja untuk server. Klien yang sesuai dengan JSON-RPC 2.0 sekarang dapat terhubung ke server Anda.
Kompilasi server dengan:
g++ stubserver.cpp -ljsoncpp -lmicrohttpd -ljsonrpccpp-common -ljsonrpccpp-server -o sampleserverLihat SRC/Contoh/Stubclient.cpp
Mengkompilasi klien dengan:
g++ stubclient.cpp -ljsoncpp -lcurl -ljsonrpccpp-common -ljsonrpccpp-client -o sampleclientSilakan lihat kontribusi.md
Anda juga dapat menyumbang melalui
Changelogs dapat ditemukan di sini.
Kami melakukan yang terbaik untuk menjaga API/ABI stabil, untuk mencegah masalah saat memperbarui kerangka kerja ini. Laporan kompatibelitas dapat ditemukan di sini.
Kerangka kerja ini dilisensikan di bawah MIT. Semua dependensi perpustakaan ini dilisensikan di bawah lisensi yang kompatibel dengan MIT.
Jika Anda menggunakan perpustakaan ini dan merasa berguna, saya akan sangat senang jika Anda memberi tahu saya.