これが私が苦労している最後のハードルです。
クライアントがターゲットクライアント名をメッセージの前に付けるときに、クライアントが他の1つのクライアントと通信できるようにしようとしています。
たとえば、イアンが請求書と通信したい場合、彼は次のように入力します。
bill hi mate
現在、新しいクライアントがサーバーに接続すると、その名前が配列リストに保存されます。これはデータパケットとバイトバッファを使用するため、名前を格納すると、その名前の長さも格納されることを意味します。サーバーのデフォルトでは、データパケットのバッファサイズは512であるため、各名前の長さは512です。
これは今まで問題ではありませんでした。クライアントが誰と通信したいかを取得するために、次のことを行いました。
else
{
System.out.println( "Client said: "+response+"\nPacket Size: "+packet.getLength()+"\nString Length: "+response.length() );
String [] usrInput = response.split( " " );
System.out.println( "Length of split string: "+usrInput.length );
}
入力を配列に分割し、配列の最初の位置で名前を探します。したがって、上から、最初の位置に請求書があります。
ここが私が間違っているところです。私は使ってみました:
- contains()
- equals()
- matches()
などですが、すべて失敗します。格納されている名前の長さのために推測しています。では、保存されている名前のサイズを、たとえば、bill-4に減らすにはどうすればよいでしょうか。
乾杯