0

私は Java ソケット プログラミングが初めてで、Java ソケット経由でコマンドまたはオブジェクトをサーバーに送信するための適切な方法を探しています。オブジェクトはサーバーに保存され、コマンドはサーバーからデータを要求します。

最初、サーバーは入力ストリームで何を受信したかを認識していないため、それを調べる必要がありますが、その方法がわかりません。入力ストリームを取り、それを文字列に変換してから、最初の文字をチェックして、それらがコマンドを形成するかどうかを判断します。私が抱えている問題は、 InputStream.toString() が java.net.SocketInputStream@437d51a6 のようなものを返すことです

ご意見やアイデアをありがとうございます。

これが私の最初の悪いアプローチです:

 String input = inputStream.toString();  // this doesn't work
 String startString =  
   input.toString().substring(0, Math.min( input.toString().length(),3));

    if(startString.equals(COMMAND)){
    // process command, e.g. to request data from the server
    }
    else {
     // extract object to send data to the server
    }
4

3 に答える 3

0

これがどのように機能するかがわかりました。秘訣は、次のように inputStream を Scanner オブジェクトにラップすることです。

Scanner s = new Scanner(inputStream);
String str = s.nextLine();
于 2013-05-26T15:45:39.673 に答える
0

「単純な」テキスト コマンドに問題はありません。SMTP または HTTP を見てください。これは単なるプレーン テキストです。

これには十分な理由があります。サーバーにtelnetで接続し、コマンドを入力するだけです。特別なクライアントがなくてもサーバーにクエリを実行できるため、これは非常に役立ちます。

ローカル Web サーバーへのtelnetの例(「GET /」と入力しただけです)

$ telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
GET /
<html>


<body>
  <h1>Welcome  on xxx</h1>
</body>

</html>

Connection closed by foreign host.

さらに、サービスはそれぞれ特別な言語または特別なバイナリ形式に関連付けられていません。

于 2013-05-26T13:24:12.637 に答える