ho implementato una comunicazione client-server con i multithread. quando trasmetto con i client il messaggio viene ricevuto e processato correttamente dal server . ma il messaggio di risposta
non perviene al client. quest'ultimo resta bloccato in sttesa. L'istruzione outToClient.writeBytes(message) viene eseguita. La versione non multithread funziona correttamente :-((((
/Servercup
import java.net.*;
import java.util.Vector;
import java.io.*;
import java.sql.*;
import java.util.StringTokenizer;
import java.lang.*;
import sviluppo.pkg.MessageHL7;
public class ServerCup implements Runnable {
Socket s ;
public BufferedReader inFromClient;
public DataOutputStream outToClient;
String message;
public void run() {
while (true) {
try {
MessageHl7 hl7 = new MessageHl7 ();
inFromClient = new BufferedReader(new InputStreamReader(s.getInputStream()));
outToClient = new DataOutputStream(s.getOutputStream());
System.out.print("Connessione avvenuta con successo :-)");
mes_hl7 = inFromClient.readLine();
MIO CODICE
..........
message = hl7.Send_message_DSR( set , query3 , QRD , QRF);
System.out.println (message);
outToClient.writeBytes(message);
}
else {
message = hl7.gestione_errore(2);
outToClient.writeBytes(message);
}
}
catch(Exception e){
System.out.println("Errore"+e.toString());
}
}
}
}
// Main
import java.lang.*;
import java.io.*;
import java.util.Vector;
import java.net.*;
public class Main{
public static void main(String args[]){
ServerCup p;
Socket channel;
ServerSocket server;
try{
while (true)
{
/* Inizializza il Socket. Porta 12000 con TimeOut di 15 secondi */
server = new ServerSocket(2000);
System.out.print("....in attesa di connessioni dai sistemi adt");
/* Si pone in attesa */
channel = server.accept();
p = new ServerCup();
p.s=channel;
Thread t = new Thread(p);
t.start();
}
}
catch (IOException e){}
}
}