-1

単純な Java オブジェクトをサーバーに送信してそこに格納するクライアント/サーバー アプリケーションを作成しました。ただし、オブジェクトには名前、電話番号、住所、年齢、ID などの文字列と整数のみが含まれているため、このコンテキストではシリアライゼーションは実際には必要ありません。信頼できるアプリケーション プロトコルが必要なため、文字列の送信はより複雑ですが、これがどのように正しく行われるかはよくわかりません。

これが機能するはずだと思う方法です。サーバーが受信したものをサーバーに通知し、厳密な順序で値を送信し、送信が終了したことをサーバーに伝えるメッセージを送信する必要があります。サーバーを不正なアクセスから保護するために、TCP ストリームの先頭である種の秘密鍵を送信することも良いことです。誰かが私を正しい道に導くことができれば、とてもうれしいです。

4

1 に答える 1

1

クライアントはサーバーに接続し、DataOutputStream を使用してオブジェクトを (フィールドとして) 送信し、最後にストリームを閉じます。

dous = new DataOutputStream(sock.getOutputStream());
for(MyObject o : objects) {
  dous.writeInt(o.getId());
  dous.writeUTF(o.getName());
  ...
}
dous.close();

サーバーは DataInputStream を使用してクライアントから送信されたオブジェクトを読み取り、EOFException によって EOS を決定します

dis = new DataInputStream(sock.getInputStream());
try {
    for(;;) {
      int id = dis.readInt(o);
      String name = dis.readUTF();
      ...
      MyObject obj = new MyObject(id, name, ...);
    }
} catch(EOFException ex) {
        // ignore, client closed OutputStream
}
于 2013-06-10T10:33:03.767 に答える