Ich benutze Java/libgdx und ich habe ein Problem mit Sockets aufgetreten. Es funktioniert langsam. Mein kleines Spiel präsentiert Charaktere, die sich nach links und rechts bewegen. Nach dem Senden von tcp/localhost bewegt es sich langsamer. Ich füge zwei Codeteile aus der Klasse Client und Server hinzu. Bitte hilf mir. Ich blieb stecken. Danke im Voraus. Wenn es notwendig ist, werde ich den ganzen Code setzen.Socket funktioniert zu langsam :: java/libgdx
// CLIENT
public class ClientThread extends Thread{
public void run(){
hints = new SocketHints();
hints.connectTimeout = 11000;
while(trwanie)
{
socket = Gdx.net.newClientSocket(Protocol.TCP, "localhost", 8784, hints);
if(!socket.isConnected())
System.out.println("NIE JEST");
//System.out.println("socket null?");
if(socket!=null)
{
try {
socket.getOutputStream().write(new String("CZESC server").getBytes()); // wiadomosc wysylana
//byte[] read = new byte[1024];
socket.getInputStream().read(read); //odebrana od servera
readString = new String(read).trim();
XY = readString;
StringToFloat();
} catch (IOException e) {
e.printStackTrace();socket.dispose();
}
}
//socket.dispose();
if(Gdx.input.isKeyPressed(Keys.ESCAPE))
{
WylaczPentle();
System.out.println("Wychodzimy z pentli");
Gdx.app.exit();
}
}
socket.dispose();
}
}
// Server
public class ServerThread extends Thread{
public void run()
{
hints = new ServerSocketHints();
hints.acceptTimeout = 12000;
socketHints = new SocketHints();
while(trwanie)
{
server = Gdx.net.newServerSocket(Protocol.TCP, "localhost", 8784, hints);
socket = server.accept(socketHints);
if(socket != null)
{
//byte[] read = new byte[1024];
try {
socket.getInputStream().read(read);
socket.getOutputStream().write((WspolzednaX+"/"+WspolzednaY).getBytes()); //---
} catch (IOException e) {
e.printStackTrace();
server.dispose();
}
}
server.dispose();
if(Gdx.input.isKeyPressed(Keys.ESCAPE))
{
WylaczPentle();
System.out.println("Wychodzimy z pentli");
Gdx.app.exit();
}
}
server.dispose();
}
}
Wenn Sie Strings schreiben möchten, sollten Sie besser einen DataOutputStream und [writeUTF()] (https://docs.oracle.com/javase/7/docs/api/java/io/DataOutputStream.html#writeUTF (java.lang.String)). Und vergessen Sie nicht, die geschriebenen Daten zu löschen. – Robert