0

はい私はsunのチュートリアルを見ましたが、私の場合は助けませんでしたが、最初のコマンドだけを転送しました。整数またはバイト配列をJavaのソケット経由で転送する方法

I`veメソッド送信側で

public void openConnection() throws IOException{ 

    serverSocket = new ServerSocket(5346); 

    Socket simSocket = serverSocket.accept(); 

    is = simSocket.getInputStream(); 
    os = simSocket.getOutputStream(); 

    writer = new PrintWriter(os); 
    isReader = new InputStreamReader(is); 
    reader = new BufferedReader(isReader); 

    System.out.println("Connection succesfull."); 
} 

public void sendTo(int command) { 
    try { 
     writer.println(command); 
     writer.flush(); 
    } catch(Exception e) { 
     System.out.println("Error sending command to the robot"); 
     System.out.println(e.toString()); 
    } 
} 

、及び

public static void setUpConnection() { 
    try { 
     socket = new Socket(InetAddress.getLocalHost(), 5346); 
     is = new InputStreamReader(
       socket.getInputStream()); 
     reader = new BufferedReader(is); 
     writer = new PrintWriter(socket.getOutputStream()); 
     System.out.println("Simulator: connection succesful"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

while (true) { 
       intCommand = reader.read(); 
       ett = reader.readLine(); // does nothing, but without this line it doesn't work 
       command = (char) intCommand; 
を得受信側では

です。これは、charまたはcharのascii番号を完全に送信します。私が必要とするのは、このコードを変更して整数を送信するか、文字の代わりにバイトの配列を単純に送信することです。私は単純にInputStreamとOutputStreamを残すだけで、最初のコマンドを受け取り、これらのメソッドはsendToを介して送信されたものを継続的に受信します。ソケットのドキュメントでさえ、彼らはcharsのみを送るexmampleしか持っていません。

+0

シリアル化を調べる(シリアル化を実装するクラスを作成するか、利用可能なシリアル化APIを使用する)。 – theglauber

答えて

0

受信した値をcharの代わりにintとして保存するようにサーバーをコーディングするだけです。

+0

私はそれを正確に行うにはどうすればよいのですか?それは数字を完全に送信するので、使用するInputStreamやsmthの種類だけです。バイト配列として受け取る必要があり、文字を取得しようとしません。 – user975869

+0

問題が受信側の場合は、ストリームが正しいデータ型として格納できるように、ストリームから何が出力されているかをサイドに確実に伝えてください。 – bdabmxican

関連する問題