0

サーバーとクライアントがあります。サーバーは複数のリクエストを処理できます。クライアントはソケットを開き、バイト ストリームを送信します。サーバーの処理中は、正しく動作していません。クライアントから次の行を送信しています

これをクライアントとして追加します

タイトル: クライアント1

5 つの異なるクライアントの場合

上記のように、文字列ビルダーを使用してフォーマットされた文字列を作成しています。

 for (i=0; i<6; i++)
 {
     Socket socket = new Socket(host, port);
     StringBuilder sb = new StringBuilder();
                    sb.append("ADD this as your client ");
                    sb.append("\r\n");
                    sb.append("Title: Client");
                    sb.append(i);
                    sb.append("\r\n");
                    String ToSend = sb.toString();


                    /// New Additions
                    byte[] byteArray = ToSend.getBytes();
                    OutputStream os = socket.getOutputStream();
                    DataOutputStream dos = new DataOutputStream(os);
                    dos.writeInt(byteArray.length);
                    dos.write(byteArray,0,byteArray.length);
                    socket.close();
                   }

サーバーでは、このように読んでいます。

 public static void main(String[] args) {
    Sampleserver file_rec = new Sampleserver();
   try {
  ServerSocket listener = new ServerSocket(port);

  while (true) {
    file_rec.socket = listener.accept();  
    new Thread(file_rec).start();
  }
}
catch (java.lang.Exception ex) {
  ex.printStackTrace(System.out);
}

}
public void run() {
try {
    InputStream is = socket.getInputStream();
    DataInputStream dis = new DataInputStream(is);
    int length = dis.readInt();
    System.out.println("Length value is " + length);
    byte[] mybytearray = new byte[length];


   int bytesRead = is.read(mybytearray, 0, length);

    String s = new String(mybytearray, 0, length);
    System.out.println(s);
    if (s.contains("ADD"))
    {
        System.out.println("Inside ADD. ");

    }
    else
    {
        System.out.println("Default ");
    }

 }

catch (java.lang.Exception ex) {
  ex.printStackTrace(System.out);
}

}

しかし、サーバーで毎回奇妙な出力が得られます。スレッド環境で(runメソッドで)処理しているときに、サーバーでbytearrayを適切に処理しているか、間違って処理していると思います。どこが間違っているのか教えてください。

4

0 に答える 0