2014-04-27 3 views
1

Je transfère des données String via des sockets, les données sont transférées parfaitement mais lentement.Sockets Java/PHP Transférer des données lentement

Mon client Java a le code suivant (Il est un plugin serveur bukkit):

while(true) { 
       try { 
        ServerSocket SRVSOCK = new ServerSocket(25560); 
        Socket SOCK = SRVSOCK.accept(); 
        InputStreamReader IR = new InputStreamReader(SOCK.getInputStream()); 
        BufferedReader BR = new BufferedReader(IR); 

        String MESSAGE = BR.readLine(); 
        System.out.println(MESSAGE); 

        if (MESSAGE != null) { 
         PrintStream PS = new PrintStream(SOCK.getOutputStream()); 
         String data = ""; 
         data += "{"; 
         data += "\"server\": {"; 
         data += "\"name\": \"" + getConfig().getString("data.name") + "\","; 
         data += "\"onlineplayers\": \"" + String.valueOf(getServer().getOnlinePlayers().length) + "\","; 
         data += "\"maxplayers\": \"" + String.valueOf(getServer().getMaxPlayers()) + "\"";          
         data += "}"; 
         data += "}"; 
         data += "}"; 
         System.out.println(data); 
         PS.println(data); 
        } 
       } catch (Exception e) { 

       } 
      } 

Les données chaîne finit par tenir la valeur {"server": {"name": "Gaming Node 2","onlineplayers": "1","maxplayers": "20"}}}

Et mon client PHP a le code suivant:

<?php 

if(!($sock = socket_create(AF_INET, SOCK_STREAM, 0))) 
{ 
    $errorcode = socket_last_error(); 
    $errormsg = socket_strerror($errorcode); 

    die("Couldn't create socket: [$errorcode] $errormsg \n"); 
} 

echo "Socket created \n"; 

//Connect socket to remote server 
if(!socket_connect($sock ,gethostbyname("Ip.address.com"), 25560)) 
{ 
    $errorcode = socket_last_error(); 
    $errormsg = socket_strerror($errorcode); 

    die("Could not connect: [$errorcode] $errormsg \n"); 
} 

echo "Connection established \n"; 

$message = "GET/HTTP/1.1\r\n\r\n"; 

//Send the message to the server 
if(! socket_send ($sock , $message , strlen($message) , 0)) 
{ 
    $errorcode = socket_last_error(); 
    $errormsg = socket_strerror($errorcode); 

    die("Could not send data: [$errorcode] $errormsg \n"); 
} 

echo "Message send successfully \n"; 

//Now receive reply from server 
if(socket_recv ($sock , $buf , 2045 , MSG_WAITALL) === FALSE) 
{ 
    $errorcode = socket_last_error(); 
    $errormsg = socket_strerror($errorcode); 

    die("Could not receive data: [$errorcode] $errormsg \n"); 
} 

//print the received message 
echo $buf; 
socket_close($sock); 
?> 

Les données sont transférées avec succès, mais prend 10 secondes. Si je raccourcis la chaîne de données du côté java, peut-être un mot, cela prend environ 1,5 seconde. Je ne pense pas que ce soit un problème de vitesse de connexion réseau, car ils s'exécutent tous deux sur la même machine (dois-je écrire un hôte local dans la zone script PHP pour profiter du fait qu'ils sont sur la même machine?). Comment puis-je accélérer le transfert des données?

+0

oui, utilisez '127.0.0.1' – goat

+0

didnt vraiment changer la vitesse du tout – user3578316

+1

' Essayez PS.flush(); '' après PS.println (données); '(en général avec le réseau Java : toujours vider après la mise en ligne d'un message). – vanOekel

Répondre

Questions connexes