Hallo Leute ...
Ich hab ein Problem... Ich hab mir ein mehr oder weniger einfaches Server-client Programm geschrieben, wo sich mehere Clients zur gleichen zeit einloggen könn... Zur Zeit sol nur eine ID des Clients an den Server übermittelt werden udn der Server soll alle ID's an alle Clients verteilen. Solange ien Client eingeloggt ist funktioniert die Übertragung, jedoch sobald sich ein 2. Client einloggt... werden die Daten nicht mehr richtig übermittelt...
Ich poste einfach mal den Code... Ist Konsolenbasierend... vllt. könntet ihr das mal testen... ich sitz hier schon seit um 9 an dem selben Problem und habe keine Lösung...
Wäre schon wenn einer von euch ein paar ratschläge hat, warum das nicht funktioniert...
mfg
Ich hab ein Problem... Ich hab mir ein mehr oder weniger einfaches Server-client Programm geschrieben, wo sich mehere Clients zur gleichen zeit einloggen könn... Zur Zeit sol nur eine ID des Clients an den Server übermittelt werden udn der Server soll alle ID's an alle Clients verteilen. Solange ien Client eingeloggt ist funktioniert die Übertragung, jedoch sobald sich ein 2. Client einloggt... werden die Daten nicht mehr richtig übermittelt...
Ich poste einfach mal den Code... Ist Konsolenbasierend... vllt. könntet ihr das mal testen... ich sitz hier schon seit um 9 an dem selben Problem und habe keine Lösung...
Code:
// Server.java
import java.net.*;
import java.util.*;
import java.io.*;
public class Server extends Thread {
public ServerSocket server_socket;
public Vector connections;
public int id = 0;
public static void main(String[] args) {
try {
Server server = new Server(4410);
server.start();
} catch (IOException e) {
e.printStackTrace();
}
}
public Server(int port) throws IOException {
server_socket = new ServerSocket(port);
System.out.println("Server is running...");
System.out.println("Waiting for client to connect.");
connections = new Vector();
}
public void run() {
try {
Socket client_socket;
while((client_socket = wait_connection(server_socket)) != null) {
Connection c = new Connection(this, client_socket, id);
connections.add(c);
id++;
}
} catch (IOException e) {
e.printStackTrace();
}
}
public Socket wait_connection(ServerSocket server_socket) throws IOException {
Socket socket = server_socket.accept();
return socket;
}
public void write_message() throws IOException {
for(int x = 0; x < connections.size(); x++) {
for(int y = 0; y < connections.size(); y++) {
Connection a = (Connection)connections.get(x);
Connection b = (Connection)connections.get(y);
PrintWriter print_writer = new PrintWriter(new OutputStreamWriter(a.client_socket.getOutputStream()));
print_writer.print(b.id);
print_writer.flush();
}
}
}
}
Code:
// Connection.java
import java.net.*;
import java.io.*;
public class Connection extends Thread {
public Server server;
public Socket client_socket;
public BufferedReader buffered_reader;
public String message;
public int id;
public Connection(Server server, Socket client_socket, int id) {
this.server = server;
this.client_socket = client_socket;
this.id = id;
message = ""+id;
this.start();
}
public void run() {
try {
while((message = read_message(client_socket)) != null) {
System.out.println(message+", ");
this.sleep(2000);
}
}
catch(IOException e) {
e.printStackTrace();
}
catch(InterruptedException e) {
e.printStackTrace();
}
}
public String read_message(Socket socket) throws IOException {
if(id == 0) {
server.write_message();
}
buffered_reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
char[] buffer = new char[200];
int count_of_chars = buffered_reader.read(buffer, 0, 200);
String message = new String(buffer, 0, count_of_chars);
return message;
}
}
Code:
// Client.java
import java.net.*;
import java.util.*;
import java.io.*;
public class Client extends Thread {
public Socket socket;
public String message = "Client is connect.";
public static void main(String[] args) {
try {
Client client = new Client(4410);
client.start();
} catch (IOException e) {
e.printStackTrace();
}
}
public Client(int port) throws IOException {
String ip = "localhost";
socket = new Socket(ip, port);
write_message(socket, message);
}
public void run() {
try {
while((message = read_message(socket)) != null) {
System.out.println(message+", ");
write_message(socket, message);
this.sleep(2000);
}
} catch(IOException e) {
e.printStackTrace();
}
catch(InterruptedException e) {
e.printStackTrace();
}
}
public void write_message(Socket socket, String message) throws IOException {
PrintWriter print_writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
print_writer.print(message);
print_writer.flush();
}
public String read_message(Socket socket) throws IOException {
BufferedReader buffered_reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
char[] buffer = new char[200];
int count_of_chars = buffered_reader.read(buffer, 0, 200);
String message = new String(buffer, 0, count_of_chars);
return message;
}
}
Wäre schon wenn einer von euch ein paar ratschläge hat, warum das nicht funktioniert...
mfg