クライアントがC++で記述され、サーバーがJavaであるクライアント/サーバーアプリケーションを作成しています。それらの間の通信はUDPプロトコルによって行われます。 ネットで文字列メッセージを交換する必要があります。 ここでは、通信が大量に行われ、クライアントがメッセージを送信してサーバーが受信しますが、Java側で受信した文字列がトランケートに似ていることに気付きました。私は機能と、コンソールにそれを表示しようとする場合、私は、意味:C++クライアントからJavaサーバーへのネット上の文字列の送信
System.out.println("This is the message received "
+ message + " by the client just now");
私は得る結果は次のとおりです。
This is the message received *message*
文字列と「クライアントによるちょうど今」アウトトランキング。
私はそれがJavaとC++の間にいくつかの非互換性があると思いますが、私は解決策を見つけることができません。
編集:
byte[] bytes = _packet.getData(); // Datagram Packet
hostName = getStringFromBytes(bytes, 0, 15);
(...)
private String getStringFromBytes (byte[] bytes, int lowerBound, int length)
{
byte[] bufferBytes = new byte[length];
System.arraycopy(bytes, lowerBound, bufferBytes, 0, length);
return new String(bufferBytes).trim();
}
送信者: ここで、受信機のコードだバッファがcharの配列である
if(sendto(_socket, buffer, BUFFER_LEN, 0, (struct sockaddr*) &_serverAddress, addressLenght) == -1)
cout << "Trasmission failed!\n" << endl;
。
コードを入力してください。 –
メッセージはおそらく0で終了していますか? – BoBTFish
ワイヤーに当たったら、それはJavaとC++の関係ではありません。 @BoBTFishに基づいて、空白とASCIIの制御文字を削除するにはmessage.trim()を試してください。 – Thomas