Tilgå en liste fra en en tråd
Jeg er i forbindelse med en lille øvelse ved at lave et lille chatprogram. Jeg har bla. lavet en server og en tilhørende tråd. Hver gang en klient logger på serveren oprettes en tråd og trådene lægges i en hægtet liste.Mit problem er nu, at når jeg fra tråden vil tilgå listen får jeg nedenstående fejl. Hvad er der galt?
.\ChatTraad.java:35: non-static variable klienter cannot be referenced from a static context
for(int i=0; i < Server.klienter.size(); i++)
^
.\ChatTraad.java:37: non-static variable klienter cannot be referenced from a static context
aktuel = (ChatTraad)Server.klienter.get(i);
^
2 errors
----------------------------------------
Server-klassen ser således ud:
import java.net.*;
import java.io.*;
import java.util.*;
public class Server
{
private int serverPort = 8888;
public LinkedList klienter = new LinkedList();
public Server()
{
startServer();
}
private void startServer()
{
System.out.println("Dette er serveren. Venter...");
try
{
ServerSocket listenSocket = new ServerSocket(serverPort);
int c = 0;
while(true)
{
Socket client = listenSocket.accept();
c++;
ChatTraad ct = new ChatTraad(client, c);
klienter.add(ct);//tilføjer den nye klient til listen
ct.start();
}
//listener.close();
}
catch (IOException e)
{
System.out.println("Port "+serverPort+ "er optaget");
}
}
public static void main (String [] args)
{
new Server();
}
}
---------------------------------------
ChatTraad:
import java.io.*;
import java.net.*;
import java.util.*;
public class ChatTraad extends Thread
{
private int id;
private DataInputStream in;
private DataOutputStream out;
private Socket clientSocket;
private ChatTraad aktuel;
public ChatTraad (Socket clientSocket, int id)
{
this.clientSocket = clientSocket;
this.id = id;
}
public void chat()
{
try
{
in = new DataInputStream(clientSocket.getInputStream());
out = new DataOutputStream(clientSocket.getOutputStream());
out.writeUTF("Velkommen til Peters server...!\n");
while (true)
{
String data = in.readUTF();
System.out.println("Klient " +id+ ": " +data);
out.writeUTF("\nFølgende blev modtaget fra serveren: " +data+"\n");
for(int i=0; i < Server.klienter.size(); i++)
{
aktuel = (ChatTraad)Server.klienter.get(i);
System.out.println("Klient id:" +aktuel.id);
}
}
}
catch (IOException e) {}
try
{
clientSocket.close();
}
catch (Exception e){}
}
public void run(Socket clientSocket, int id)
{
ChatTraad ct = new ChatTraad(clientSocket, id);
ct.chat();
}
}
