Hallo lass mich direkt auf das Problem kommen. Ich habe ein großes JSON-Paket, das der Server an diesem Client sendet, sobald der ClientJava tcp Socket wird nicht richtig empfangen
authentifiziertAber das Paket kommt in eine seltsame Art und Weise zurück, wie es Split- oder etwas Beispiel ist:
Die JSON sollte sein:
Received: {"UserID":1,"PlayerID":2,"EXP":0,"Lvl":1,"Coins":0,"ItemSlots":30}
wenn es darum geht, durch:
Received: {"UserID":1,"PlayerID":2,"EXP":0,"Lvl":1,"Coins":0,
Received: "ItemSlots":30}
Warum er das Paket oder etwas gespalten, wenn es um den Client kommt und wie kann ich dieses Problem beheben sowieso?
Java Erhalten Code:
private class ClientThread extends Thread {
public void run() {
try {
while (selector.select() > 0) {
for (SelectionKey sk : selector.selectedKeys()) {
selector.selectedKeys().remove(sk);
if (sk.isReadable()) {
SocketChannel sc = (SocketChannel)sk.channel();
ByteBuffer buff = ByteBuffer.allocate(1024);
String content = "";
while (sc.read(buff) > 0) {
sc.read(buff);
buff.flip();
content += charset.decode(buff);
buff.clear();
}
System.out.println("Recieved: " + content);
sk.interestOps(SelectionKey.OP_READ);
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Dank einen wundervollen Tag.
Versuchen Sie, die ByteBuffer-Größe auf 2048 zu erhöhen. –
Ich habe versucht, es funktioniert, aber nicht für große Pakete ich denke, eine Art von Code muss für größere Pakete getan werden. – Premt
Versuchen Sie Folgendes: ByteBuffer.allocate (2048); in Ihrem Code –