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?
oui, utilisez '127.0.0.1' – goat
didnt vraiment changer la vitesse du tout – user3578316
' 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