java IO tråde igen
jeg har et server program der står og lytter om der er klienter, når der kommer en klient oprettes der en tråd for den enkelte klient.når tråden oprettes gemmes den også i et array for at kunne bruges senere, og for at kunne komme i kontakt med den enkelte klient.
class ProcessConnection extends Thread {
Socket client;
BufferedReader is;
DataOutputStream os;
Handprint hand;
ListAll list;
public byte kommando;
public byte[] Ip;
boolean flag = false;
private ArrayList Tharray;
boolean flag1 = false;
public ProcessConnection(Socket s, ArrayList Tharray) { // constructor
client = s;
try {
is = new BufferedReader(new InputStreamReader
(client.getInputStream()));
os = new DataOutputStream(client.getOutputStream());
this.Tharray = Tharray;
Tharray.add(this);
} catch (IOException e) {
System.out.println("Exception: " + e.getMessage());
}
this.start();
//Tharray arrayet oprettes her i Server klassen
public class Server {
String keystore = "serverkeys";
char keystorepass[] = "hellothere".toCharArray();
char keypassword[] = "hiagain".toCharArray();
static public ArrayList iparray = new ArrayList();
static public ArrayList Tharray = new ArrayList();
når jeg så gerne vil i kontakt med den enkelte tråd , og kalde en metode skriver jeg
try{
ProcessConnection kk = (ProcessConnection)Tharray.get(plas);
kk.flag1 = true;
while(kk.flag1){
System.out.println("List4");
ah = kk.Getshare();//kalder metode
}
System.out.println("list5");
System.out.println(ah);
return ah;
}
catch(Exception g){
System.out.println(g.getMessage());
return "nej";
}
her er den metode der kaldes
public String Getshare(){
String request = "aa";
try{
os.writeBytes("1223\n");
os.flush();
System.out.println("1223");
}
catch(Exception f){
System.out.println(f.getMessage());
}
try{
request = is.readLine();
}
catch(Exception g){
System.out.println(g.getMessage());
}
flag1 = false;
return request;
}
det mærkelige problem jeg har er så at der skrives fint til klienten med os.writeBytes("1223\n"); og dette modtages også i klienten men når klienten så skriver tilbage går det hele ned og jeg får her en Exception fra Serveren der fylder Socket Closed, det syntes jeg er lidt mærkeligt da jeg jo godt kan skrive til klienten, det er først når den skriver tilbage at det går alt :(
her skriver den tilbage
if (request.equals("1223")) {
String[] s = Listfiles.fileslist();
String names = "";
for(int i = 0; i< s.length; i++) {
names = names + "*" + s[i];
}
out.write(names.concat("\n"));
System.out.println(names);
out.flush();
request = "ah";
ps. det hele kører på sockets og jeg mener jeg har lavet noget ligende arne's post
http://www.eksperten.dk/spm/701837
