J'écris une communication client-serveur : le client envoie une image au serveur. Ce dernier doit exécuter un fichier python et renvoyer au client une chaîne de caractère. Sauf que j'ai un soucis, le client ne reçoit pas cette chaîne de caractère.
Voici le code du client :
public static void main(String[] args) {
Socket sc = null;
try {
sc = new Socket(InetAddress.getLocalHost(),2001);
OutputStream oS=sc.getOutputStream();
PrintWriter pw = new PrintWriter(oS);
InputStream inS = sc.getInputStream();
DataInputStream dIS = new DataInputStream(inS);
pw.println("5");
pw.flush();
byte buf[] = new byte[1024];
FileInputStream in = new FileInputStream("data/starwars.jpg");
int n = in.read(buf);
while(n!=-1) {
oS.write(buf,0,n);
oS.flush();
n=in.read(buf);
}
in.close();
BufferedReader bf2 = new BufferedReader(new InputStreamReader(inS));
String msg=bf2.readLine(); //programme bloque car ne reçoit jamais le message du serveur
System.out.println(msg);
catch(Exception e) {
e.printStackTrace();
}
finally {
try {
sc.close();
}
catch(Exception e) {}
}
Et voici le codu du serveur :
@Override
public void run() {
try {
InputStream inS = socket.getInputStream();
OutputStream oS = socket.getOutputStream();
InputStreamReader in = new InputStreamReader(inS);
BufferedReader bf = new BufferedReader(in);
String message = bf.readLine();
int i = Integer.parseInt(message);
Bdd bdd = new Bdd();
DataOutputStream dOS= new DataOutputStream(oS);
byte buf[] = new byte[1024];
FileOutputStream fOS = new FileOutputStream("data/image.jpg");
int n = inS.read(buf);
while(n!=-1) {
fOS.write(buf,0,n);
fOS.flush();
n=inS.read(buf);
}
fOS.close();
dOS.close();
String pythonScriptPath = "data/test.py";
String[] cmd = new String[3];
cmd[0] = "python";
cmd[1] = pythonScriptPath;
cmd[2] = "19";
Runtime rt = Runtime.getRuntime(); //exécution script python
BufferedReader bf2=null;
String msg="0";
Process pr = rt.exec(cmd);
if(pr.waitFor()==0) {
bf2 = new BufferedReader(new FileReader("data/newfile.txt")); //pour l'instant on récupère ce que renvoie le fichier python dans un fichier texte
msg=bf2.readLine();
System.out.println(msg);
bf2.close();
}
/* J'arrive pas à envoyer pw3 */
PrintWriter pw3 = new PrintWriter(oS);
pw3.println(msg);
pw3.flush();
pw3.close();
Les problèmes sont je crois ligne 53 du serveur et donc la ligne 32 du client qui bloc.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.