jeg sidder med 3 filer ... KKMultiServer.java som gernere flere KKMultiServerThread(tråde) som alle bruger en KnockKnockProtocol
i KKMultiServeren laver jeg et en liste med varible public List nameList = new List(); som jeg ønsker at tilføre nogle værdier i protokollen (ok not nice men det kommer til at virke)
dvs noget nameList.add(nytNavn); -----------------------------------------------------------------
public class KKMultiServerThread extends Thread { private Socket socket = null;
public KKMultiServerThread(Socket socket) { super("KKMultiServerThread"); this.socket = socket; }
public void run() {
try { PrintWriter out = new PrintWriter(socket.getOutputStream(), true); BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream()));
public class KnockKnockProtocol { private static final int WAITING = 0; private static final int LogIn = 1; private static final int AllFine = 2; private static final int ANOTHER = 3;
private static final int NUMJOKES = 5;
private int state = WAITING; private int currentJoke = 0;
private String[] clues = { "Turnip", "Little Old Lady", "Atch", "Who", "Who" }; private String[] answers = { "Turnip the heat, it's cold in here!", "I didn't know you could yodel!", "Bless you!", "Is there an owl in here?", "Is there an echo in here?" };
public String name = null;
extern nameList ; <--- MIT GÆT
public String processInput(String theInput) { String theOutput = null;
if (state == WAITING) { theOutput = "What is your name?"; // client state = LogIn; } else
if (state == LogIn) { name = theInput; theOutput = "Welcome " + name + "\n To get all the names type 'list'"; state = AllFine; } else
if (state == AllFine && theInput.equalsIgnoreCase("list")) { theOutput = name ; } else
if (state == LogIn) { if (theInput.equalsIgnoreCase("y")) { theOutput = "Knock! Knock!"; if (currentJoke == (NUMJOKES - 1)) currentJoke = 0; else currentJoke++; state = LogIn; } else { theOutput = "Bye."; state = WAITING; } } return theOutput; } }
ja men så bliver den ikke rettet dynamisk - men kun når der bliver lavet en ny af dem. Dvs den første client opdaer "vist" ikke at der kommer endnu en client
sidder nu med en C:\Documents and Settings\Dyret Ole\Skrivebord\DIST\opgave1\KKMultiServer.java:11: non-static method somethingNoneStatic() cannot be referenced from a static context int b = somethingNoneStatic(); ^ 1 error
Tool completed with exit code 1
Jeg mener det er et standard trik at komme væk fra static metoder
------------------------------------------------------------------------ import java.net.*; import java.io.*; import java.awt.List; public class KKMultiServer {
public List nameList;
public static void main(String[] args) throws IOException {
try{ int b = somethingNoneStatic(); } catch (Exception e) { System.err.println("somethingNoneStatic()"+ e);
} }
public int somethingNoneStatic(){ ServerSocket serverSocket = null; boolean listening = true;
try { serverSocket = new ServerSocket(4444); } catch (IOException e) { System.err.println("Could not listen on port: 4444."); System.exit(-1); }
jamen det var mig der var spade dum .... jeg tænkte bare for meget C++ og ikke Java
Synes godt om
Ny brugerNybegynder
Din løsning...
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.