これは私が苦労している最終的なハードルです。UDPに関するその他の問題
私はクライアントが他のクライアントと通信することを許可して、メッセージにターゲットクライアント名を付加します。
イアンは、法案と通信したい場合例えば、彼のように入力します。
今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);
}
は、それが配列に彼らの入力を分割し、名前の配列の最初の位置になります。私は、クライアントが通信したい人を得るために以下のことを行っています。上から、最初の位置に請求書があります。
ここで私は間違っています。私が使用してみました:
- は()
- のequals()ように
- マッチ()
とが含まれていますが、すべて失敗します。名前の長さが記憶されているので推測しています。だから、ちょうど例えばbill - 4に保存されている名前のサイズをどうやって減らすことができますか?
いいえお返事
チャットのようなプログラム(または信頼性を必要とするもの)については、UDPの代わりにTCPを使うことを考えてください。 – RageD
@ RageDの注釈で詳しく述べると、これは、UDPが、送信されたのと同じ順序でメッセージが受信されることを保証しないためです。一方、TCPは順序を保証します。 – user1329572
私はTCPを使うことができません - 私はUDPを使う必要があります - 他のオプションはありません – Katana24