Hi Leute, ich bin grade dabei nen Chat zu schreiben für max. 300 User. Das Problem ist aber, dass die Verbindung nicht so recht zu stande kommt.
Client:
Server:
Wenn ich den Server, dann den Client starte kommt eine Verbindung zustande. Aber eigentlich sollte alle 200ms die Nachricht "Server-Thread läuft..." bzw. "Client-Thread läuft..." in der Console ausgegeben werden, da ich den Befehl in der while(true)-Schleife hab. Desweiterens ollte ständig ein "PING" bzw. "PONG" gesendet und empfangen werden, wird es aber nicht. Nach 10sec. bekomme ich dann einen Read-Timeout. Könnt ihr mir sagen woran das liegen könnte?
Gruß plakY
Client:
Code:
package ChatClient;
import java.io.*;
import java.net.*;
import java.lang.Runnable;
import java.lang.Thread;
public class ClientTool implements Runnable{
private Socket sock;
private InputStream input;
private OutputStream output;
private BufferedReader reader;
private PrintWriter writer;
private Thread thr;
public ClientTool(){
System.out.println("Client läuft");
try{
connect("localhost", 3140);
}catch(IOException e){
e.printStackTrace();
}
}
public void connect(String ip, int port) throws IOException, UnknownHostException{
sock = new Socket(ip, port);
sock.setSoTimeout(10000);
sock.setKeepAlive(true);
writer = new PrintWriter(sock.getOutputStream(),true);
reader = new BufferedReader(
new InputStreamReader(sock.getInputStream()));
thr = new Thread(this);
thr.start();
}
public void run(){
while(true){
System.out.println("Client-Thread läuft...");
try{
writer.write("PING");
System.out.println(reader.readLine());
}
catch(IOException e){
e.printStackTrace();
}
try{
Thread.sleep(200);
}catch(InterruptedException e){
e.printStackTrace();
}
if(!(sock.isConnected() && sock.isBound())){
System.out.println("Server nicht verbunden");
}
}
}
public static void main(String[] args){
new ClientTool();
}
}
Server:
Code:
package chatserver;
import java.io.*;
import java.net.*;
import java.lang.Runnable;
public class ServerTool implements Runnable{
private Socket sock;
private ServerSocket serversock;
private InputStream input;
private OutputStream output;
private BufferedReader reader;
private PrintWriter writer;
private Thread thr;
private int clients;
public ServerTool() {
System.out.println("Server läuft");
try{
connect(3140);
clients = 0;
}catch(IOException e){
e.printStackTrace();
}
}
public void connect(int port) throws IOException, UnknownHostException{
serversock = new ServerSocket(port);
serversock.setSoTimeout(10000);
sock = serversock.accept();
sock.setSoTimeout(10000);
sock.setKeepAlive(true);
writer = new PrintWriter(sock.getOutputStream(),true);
reader = new BufferedReader(
new InputStreamReader(sock.getInputStream()));
thr = new Thread(this);
thr.start();
}
public void run(){
while(true){
System.out.println("Server-Thread läuft...");
try{
writer.write("PONG");
writer.flush();
System.out.println(reader.readLine());
}
catch(IOException e){
e.printStackTrace();
}
try{
Thread.sleep(200);
}catch(InterruptedException e){
e.printStackTrace();
}
if(!(sock.isConnected() && sock.isBound())){
System.out.println("Server nicht verbunden");
}
}
}
public static void main(String[] args){
new ServerTool();
}
}
Wenn ich den Server, dann den Client starte kommt eine Verbindung zustande. Aber eigentlich sollte alle 200ms die Nachricht "Server-Thread läuft..." bzw. "Client-Thread läuft..." in der Console ausgegeben werden, da ich den Befehl in der while(true)-Schleife hab. Desweiterens ollte ständig ein "PING" bzw. "PONG" gesendet und empfangen werden, wird es aber nicht. Nach 10sec. bekomme ich dann einen Read-Timeout. Könnt ihr mir sagen woran das liegen könnte?
Gruß plakY