05. november 2003 - 16:09Der er
8 kommentarer og 1 løsning
Socket overføre ArrayList
Jeg har følgende kode der godt kan compile uden fejl. Meningen er at klienten kalder serveren med et projektnavn. Serveren kalder så en andenklasse med parameteren projektnavn og der returneres en ArrayList indeholdende Strings. Arraylisten skal så via ObjectOutputStream/ObjectInputStream sendes fra Serveren over til klienten der så udskriver alle Strengene. Der er indsat nogle System.outPrintln for at finde ud af hvor langt programmet når. Programmet stopper hænger efter både klienten og Serveren har udskrevet "1". Hvad er der galt?
public class Client { public static void main (String[]args) { try { ArrayList list; Socket s = new Socket("127.0.0.1", 1234); //BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter out = new PrintWriter(s.getOutputStream(), true); out.println("Projekt1"); System.out.println("1"); ObjectInputStream input = new ObjectInputStream(s.getInputStream()); System.out.println("2"); list = (ArrayList)input.readObject();
for(int i = 0; i < list.size(); i++) { System.out.println((String)list.get(i)); } } catch (Exception e) { e.printStackTrace(); } } }
public class Server { public static void main (String[]args) { try { ServerSocket s = new ServerSocket(1234); IncomingThread t = new IncomingThread(s); t.start(); } catch (Exception e) { e.printStackTrace(); } } }
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
"normalt" (hvad det så er), så plejer man at lave en loop i server main som accepter og laver en tråd som tager den af accept returnerede socket som argument til constructor.
public class Client { public static void main (String[]args) { try { ArrayList list; Socket s = new Socket("127.0.0.1", 1234); ObjectOutputStream output = new ObjectOutputStream(s.getOutputStream()); ObjectInputStream input = new ObjectInputStream(s.getInputStream()); output.writeObject("Projekt1"); list = (ArrayList)input.readObject(); for(int i = 0; i < list.size(); i++) { System.out.println((String)list.get(i)); } } catch (Exception e) { e.printStackTrace(); } } }
public class Server { public static void main (String[]args) { try { ServerSocket s = new ServerSocket(1234); IncomingThread t = new IncomingThread(s.accept()); t.start(); } catch (Exception e) { e.printStackTrace(); } } }
class IncomingThread extends Thread { Socket s; ArrayList list;
public IncomingThread(Socket sock) { s = sock; list = new ArrayList(); }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.