https://github.com/ztrehagem/dummy-rpc-java-c
大学の課題 remote procedure call (C to Java)
https://github.com/ztrehagem/dummy-rpc-java-c
Last synced: 3 months ago
JSON representation
大学の課題 remote procedure call (C to Java)
- Host: GitHub
- URL: https://github.com/ztrehagem/dummy-rpc-java-c
- Owner: ztrehagem
- Created: 2017-06-06T08:42:31.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2017-06-09T06:20:01.000Z (about 8 years ago)
- Last Synced: 2025-01-28T04:29:18.891Z (4 months ago)
- Language: C
- Homepage:
- Size: 287 KB
- Stars: 0
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# コンパイル方法
- cmake が必要です
1. javac Server.java
2. cmake .
3. make# 実行方法
- java Server (サーバ)
- ./client (クライアント)# 実行のスクリーンショット
- server.png
- client.png# 定義した通信プロトコル
- サービスを取得する
1. [client]: スペース区切りの文字列によるコマンドを送信
- "fetch (サービス名)"
2. (server) シリアライズしたオブジェクトのバイト列を送信してクローズ- メソッドコール
1. [client]: スペース区切りの文字列によるコマンドを送信
- "call (サービス名) (メソッド名)"
2. [client]: 4バイト(BE)でその後のバイト列の長さを送信
3. [client]: シリアライズした第1引数のオブジェクトのバイト列を送信# 苦労(工夫)した点
- バイト列を受信するときと,シリアライズしてバイト列を生成するとき,最終的なバイト列全体の長さがわからないので,バイト列の断片毎にmallocしリスト構造を作り,最後にconcatするようにした.(blist.h/.c)
- JavaでのClassオブジェクトを表現するようなCのstructの定義.Javaのシリアライズの文法に合わせて再帰構造になるようにした. (descriptor.h/.c)
- クライアントでRPCする際に `task.hello(&task, person);` という記述ができるようにした.つまりスタブ化している. (client.c, task.h/.c)
- Server.javaではサービスの登録時にだけ「Task」が登場し,それ以降は「Task」も「Person」も使われていない. (Reflection)