Hellas!
Ich möchte gerne eine Verbindung zwischen einem Server und mehreren Clients herstellen.
Das gehört zu einem kleinen Spiel, das ich programmiere. In dem die Reaktionszeit des Clients getestet wird.
Bei der kommunikation hab ich noch ein kleines Problem.
Der Server registriert zwar dass sich ein Client angemeldet hat, jedoch wenn ich probiere etwas vom Client zum Server zu schicken bekommt dieser nichts!
Als vorlage habe ich den Server - Client Chat von diesem Forum verwendet.
Hier der Quellcode:
:arrow: Client.java
:arrow: ClientBody.java
:arrow: Server.java
:arrow:ServerBody.java
Das ist nur ein "dummer" prototyp woduch ich mich ein wenig in die Kommunikation einarbeiten wollte...
**** Ab hier tut sich nichts mehr... ich finds einfach nicht raus warum. Vielleicht hilft ein Blick eines Außenstehenden.
Danke für die Hilfe schon mal im Voraus
Greetz
Ich möchte gerne eine Verbindung zwischen einem Server und mehreren Clients herstellen.
Das gehört zu einem kleinen Spiel, das ich programmiere. In dem die Reaktionszeit des Clients getestet wird.
Bei der kommunikation hab ich noch ein kleines Problem.
Der Server registriert zwar dass sich ein Client angemeldet hat, jedoch wenn ich probiere etwas vom Client zum Server zu schicken bekommt dieser nichts!
Als vorlage habe ich den Server - Client Chat von diesem Forum verwendet.
Hier der Quellcode:
:arrow: Client.java
Code:
package ClickDaPic.client;
import java.net.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
public class Client
{
Socket s;
PrintWriter out;
BufferedReader in;
private String ip;
private int port;
public Client(String ip, int port) {
this.ip=ip;
this.port=port;
}
public void startClient()
{
try
{
s = new Socket(ip, port);
out = new PrintWriter(new DataOutputStream(s.getOutputStream()));
System.out.println ("Starte Client...");
new ClientBody(s.getInputStream()).start();
System.out.println("Client gestartet...\n\n");
}
catch(UnknownHostException e)
{
System.out.println ("[ERROR] Host not found\n"+e.getMessage()+" in "+getClass().getName());
}
catch(IOException e)
{
System.out.println ("[ERROR] Server not found\n"+e.getMessage()+" in "+getClass().getName());
}
System.out.println ("Sending test");
send("time|mani"+(int)(Math.random()*10)+"|"+(int)(Math.random()*1000));
System.out.println ("time|mani"+(int)(Math.random()*10)+"|"+(int)(Math.random()*1000));
System.out.println ("Testtime sent!");
}
public void send(String msg)
{
out.println(msg);
}
}
:arrow: ClientBody.java
Code:
package ClickDaPic.client;
import java.io.*;
public class ClientBody extends Thread
{
private InputStream i;
private String msg;
private BufferedReader in;
public ClientBody(InputStream i) {
this.i=i;
}
public void run()
{
String[] result;
try
{
in = new BufferedReader(new InputStreamReader(i));
msg = in.readLine();
while(!msg.contains("stop"))
{ System.out.println (msg);
if(msg.contains("show"))
{
result = msg.split("|");
}
}
}
catch(IOException e)
{
System.out.println ("[EROOR] IO Error\n"+e.getMessage()+" in "+getClass().getName());
}
}
}
:arrow: Server.java
Code:
package ClickDaPic.server;
import java.util.*;
import java.net.*;
public class Server
{
private int port;
private Hashtable clients;
private int counter;
public Server(int port)
{
this.port = port;
clients = new Hashtable();
}
private void startServerListener()
{
ServerSocket ss ;
try
{
ss = new ServerSocket(port);
System.out.println("Server gestartet...");
while (true)
{
new ServerBody(ss.accept(), this).start();
System.out.println ("Online Clients: ["+(++counter)+"]");
}
}
catch (Exception e)
{
System.out.println ("[ERROR] "+e.getMessage()+" "+getClass().getName());
}
}
public void broadcast(String name, String msg) throws Exception {
for (Enumeration e = clients.keys();e.hasMoreElements();)
((ServerBody) clients.get((String) e.nextElement())).send(name + ": " + msg);
}
public void send(String name, String targetname, String msg) throws Exception {
((ServerBody) clients.get(targetname)).send(name + ": " + msg);
}
public void removeClient()
{
counter--;
}
public static void main(String[] args)
{
new Server(1234).startServerListener();
}
}
:arrow:ServerBody.java
Code:
package ClickDaPic.server;
import java.net.*;
import java.io.*;
class ServerBody extends Thread{
private Socket cs;
private Server server;
private PrintWriter out;
private BufferedReader in;
String input;
String output;
public ServerBody(Socket cs, Server server) {
this.cs=cs;
this.server=server;
}
public void run()
{
try
{
in = new BufferedReader (new InputStreamReader(cs.getInputStream()));
out = new PrintWriter(new DataOutputStream(cs.getOutputStream()));
System.out.println ("Input?"); //Das wird noch ausgegeben *****
input = in.readLine(); //Hier tut sich nichts mehr
System.out.println ("Received?"); //Wird nicht mehr ausgegeben
while(!input.contains("stop"))
{
System.out.println (input+" Received");
String[] substring;
substring = input.split("|");
if(substring[0].equals("time"))
System.out.println ("Recorded Time!");
}
}
catch(Exception e)
{
System.out.println ("[ERROR]\n"+e.getMessage()+" in "+getClass().getName());
server.removeClient();
}
}
public void send(String output) throws Exception {
out.println(output);
out.flush();
}
}
Das ist nur ein "dummer" prototyp woduch ich mich ein wenig in die Kommunikation einarbeiten wollte...
**** Ab hier tut sich nichts mehr... ich finds einfach nicht raus warum. Vielleicht hilft ein Blick eines Außenstehenden.
Danke für die Hilfe schon mal im Voraus
Greetz