Hallo,
ich habe einen Java NIO Server, dieser erwartet am anfang des Datenpaketes immer ein Integer (4 byte) welches die Länge des Pakets angibt.
In einem Java Client habe ich die Kommunikation so realisiert:
cb = java.nio CharBuffer
bb = java.nio ByteBuffer
encoder = CharsetEncoder
Das ganze klappt wunderbar der Server bekommt Hallo Welt und gibt es aus.
Nun hab ich versucht einen C# Client zu erstellen und zwar mit diesem Code:
Hier bekommt mein Java Server zwar auch "Hallo Welt", erwartet aber noch ~ 167772150 bytes mehr.
Der Schluss zu dem ich gekommen bin ist, dass etwas mit der Zahl am Anfang des Pakets nicht stimmen kann, aber ich weiss nicht was
Ich hoffe mir kann jemand helfen!!
Der Server extrahiert die Zahl mit
bb = java.nio ByteBuffer
mfg
ich habe einen Java NIO Server, dieser erwartet am anfang des Datenpaketes immer ein Integer (4 byte) welches die Länge des Pakets angibt.
In einem Java Client habe ich die Kommunikation so realisiert:
Code:
cb.clear();
bb.clear();
cb.append("Hallo Welt :)");
cb.flip();
bb.putInt(cb.remaining()); // <---
encoder.encode(cb, bb, true);
bb.flip();
sc.write(bb);
cb = java.nio CharBuffer
bb = java.nio ByteBuffer
encoder = CharsetEncoder
Das ganze klappt wunderbar der Server bekommt Hallo Welt und gibt es aus.
Nun hab ich versucht einen C# Client zu erstellen und zwar mit diesem Code:
Code:
TcpClient client = new TcpClient();
client.Connect("localhost", 1234);
NetworkStream stream = client.GetStream();
string message = "Hallo Welt";
MemoryStream meoryStream = new MemoryStream();
using (BinaryWriter writer = new BinaryWriter(meoryStream))
{
Encoding ascii = Encoding.ASCII;
writer.Write(message.Length);
writer.Write(ascii.GetBytes(message));
}
byte[] data = meoryStream.ToArray();
stream.Write(data, 0, data.Length);
Hier bekommt mein Java Server zwar auch "Hallo Welt", erwartet aber noch ~ 167772150 bytes mehr.
Der Schluss zu dem ich gekommen bin ist, dass etwas mit der Zahl am Anfang des Pakets nicht stimmen kann, aber ich weiss nicht was

Ich hoffe mir kann jemand helfen!!
Der Server extrahiert die Zahl mit
Code:
bytesToRead = bb.getInt();
mfg