0

Javaを使用してサーバーとストリームを送受信する必要があります。"telnet 10.0.1.5 9100"プロトコルは telnet であり、Windows でこのコマンドを使用して cmd を使用すると"^AI202"、応答が返されます。

コード Java:

import java.io.*;

import java.net.*;

public static void main(String[] args) throws SocketException, IOException {

    Socket s = new Socket();

    PrintWriter s_out = null;

    BufferedReader s_in = null;

    String remoteip = "10.0.1.5";

    int remoteport = 9100;

    s.connect(new InetSocketAddress(remoteip , remoteport));

    s_out = new PrintWriter( s.getOutputStream(), true);

    s_in = new BufferedReader(new InputStreamReader(s.getInputStream()));

    String message = "^AI202";

    try{

    System.out.println(s_in.readLine());

    }

    catch(Error e){

    System.out.println(e);

    }

    s_out.close();

    s_in.close();

    s.close();

}

問題は同じです:メソッドとプログラムサイクルを無限にs_in呼び出します。readLine()

4

2 に答える 2

0

問題は、telnetプロトコルが改行でコマンドを終了しないことです。

読み取りブロックを次のように変更します

  try {
    char [] cbuf = new char[7];
    System.out.println(s_in.read(cbuf, 0, cbuf.length));
  } catch(Error e){
    System.out.println(e);
  }

そして、あなたはいくつかのインプットを得るでしょう。

于 2013-02-08T11:40:23.557 に答える
0

私は System.out.println(s_in.readLine()); だと思います。何度も何度も読み込もうとし、毎回失敗して無限ループを引き起こします。

試す

 String line ="";

 while ((line = s_in.readLine()) != null) { 

      // Do what you want to do with line.          

}

Java Socket BufferReader.readline が null を取得

于 2013-02-08T10:53:08.710 に答える