zdravím, snažím se udělat gui klienta pro komunikaci se serverem. Abych to lépe vysvětlil:
Mám 3 vlákna: 1) GUI Okno, kterej zavolá metodu connect a připojí se na server - vytvoří nové vlákno, ve kterém má probíhat komunikace a sám sebe zavře. 2) GUI okno, které má komunikovat se serverm (odesílat a přijímat data) 3) To je již zmíněné vlákno spuštěné 1. oknem.
Jak docílit toho abych do toho 3. vlákna mohl přistupovat a volat třeba metodu na posílání a přijímání dat z právě běžícího spojení? Zkoušel sem toto:
package com.is.admin.net;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class connect {
public static String get = null;
public static String send = null;
public static boolean cekam = false;
public static boolean prijem = false;
public static boolean connected = false;
public static String trans(String to) {
String from = null;
cekam = true;
prijem = false;
send = to;
while(cekam) {
if(prijem = true) {
from = get;
get = null;
cekam = false;
}
}
return from;
}
public static void conn(String host, int port) {
boolean trans = true;
try {
Socket client=new Socket(host,port);
System.out.println("Jsem pripojen!");
connected = true;
//Streamy
PrintStream out=new PrintStream(client.getOutputStream());
BufferedReader in= new BufferedReader(new InputStreamReader(client.getInputStream()));
out.print("FirstWelcomeWord\n");
out.flush();
String temp;
while(trans) {
if (send != null) {
out.print(send);
out.flush();
send = null;
}
if(in.ready()) {
temp = in.readLine();
} else temp = null;
if(temp != null) {
get = temp;
prijem = true;
}
if("PleaseEnd".equals(temp)) trans = false; //pokud prijmem prazdny socket s null nebo ukonceni - vypnem to
}
in.close();
out.close();
client.close();
} catch (UnknownHostException ex) {
System.out.println("Chyba pri pripojovani:" + ex);
} catch (IOException ex) {
System.out.println("Chyba pri pripojovani:" + ex);
}
}
}
A vytvoření vlákna pro komunikaci:
Thread t = new Thread() {
@Override
public void run() {
connect.conn(host, port);
}
};
t.start();
Melo to fungovat tak ze kdyz odkudkoliv zavolam trans(String to); čímž bych měl odeslat data na server a následně přijmout zpět, ale bohužel to prostě nefunguje (do tý metody trans potřebuju líst z jiného vlákna)...
Snad pochopíte muj problem... Díky za každou pomoc