ich schaff es irgendwie nichts das ding zum laufen zu bringen. ich hab hier eine serverklasse die 2 mal auf einen client wartet der sich verbindet. danach sollte durch nen buttonclick testweise eine nachricht verschickt werden. hier der code:
kann mir einer sagen was da falsch ist?
bis jetzt wird jedenfalls bei nem click des buttons, nachdem 2 clients geöffnet wurden, eine nachricht zum fenster des anderen geschickt, aber das passiert irgendwie nicht immer. es reagiert immer nur eins der fenster wenn man etwas zum anderen schicken will, bis man ein par mal auf den button gehämmert hat, dann reagiert wieder nur der im anderen client.
Java:
public void run()
{
try{
Socket client_socket = listen_socket.accept();
Connection peer = new Connection(client_socket,clients);
connections.add(peer);
peer.send("socket connected digga");
for(Connection cl :connections)
{
cl.send("1 clients connected");
}
System.out.println("client 1 connected");
Socket client_socket_02 = listen_socket.accept();
Connection peer_02 = new Connection(client_socket_02,clients);
connections.add(peer_02);
peer.send("socket connected digga");
for(Connection cl :connections)
{
cl.send("2 clients connected");
}
System.out.println("client 2 connected");
while(true)
{
int i=0;
for(Connection c :connections)
{
if(c.client.isConnected())
{
i++;
}
}
clients=i;
for(Connection c :connections)
{
if(c.client.isConnected())
{
for(Connection c1:connections)
{
if(c1.getMessage()!=null)
c1.send(c.getMessage());
System.out.println(c.getMessage());
}
}
}
Java:
import java.io.*;
import java.net.*;
public class Connection extends Thread
{
public Socket client;
public BufferedReader in;
public PrintWriter out;
public int clientNr;
public Connection(Socket client_socket,int nr)
{
System.out.println("connection class created");
client=client_socket;
clientNr=nr;
try
{
out=new PrintWriter(
client_socket.getOutputStream(),true
);
in=new BufferedReader(
new InputStreamReader(
client_socket.getInputStream()
)
);
}catch(IOException e){
System.err.println("Exception while getting socket streams: " + e);}
this.start();
}
public void send(String msg)
{
out.println(msg);
}
public String getMessage()
{
try{
String text=in.readLine();
if(text!=null)
{
System.out.println("text:"+text);
}
return text;
}catch(IOException e){ }
return null;
}
public void run()
{
while(true)
{
}
}
}
kann mir einer sagen was da falsch ist?
bis jetzt wird jedenfalls bei nem click des buttons, nachdem 2 clients geöffnet wurden, eine nachricht zum fenster des anderen geschickt, aber das passiert irgendwie nicht immer. es reagiert immer nur eins der fenster wenn man etwas zum anderen schicken will, bis man ein par mal auf den button gehämmert hat, dann reagiert wieder nur der im anderen client.
Zuletzt bearbeitet: