M
macman
Gast
Hallo,
ich habe ein kleinen Chat zusammen gebastelt und habe nun ein kleines Problem!
Da ich in der Socket Abteilung nur sehr wenig gemacht habe benötige ich nun eure Hilfe.
Der Hauptteil meiner Klassen dürfte euch bekannt vorkommen, da das meiste wie aus dem
"FAQ -> Java-Chat selbst gemacht" übernommen wurde.
Ich vermute ich habe einen kleinen Fehler in der Übertragung, also Input-/Output-Stream gemacht!
- Server starten und stoppen geht
- Client connecten und disconnecten geht
- Nachrichten über Client Eingabe geht nicht (Client -> sendMSG(String msg))
Server.java
Connection.java
Client.java
ich habe ein kleinen Chat zusammen gebastelt und habe nun ein kleines Problem!
Da ich in der Socket Abteilung nur sehr wenig gemacht habe benötige ich nun eure Hilfe.
Der Hauptteil meiner Klassen dürfte euch bekannt vorkommen, da das meiste wie aus dem
"FAQ -> Java-Chat selbst gemacht" übernommen wurde.
Ich vermute ich habe einen kleinen Fehler in der Übertragung, also Input-/Output-Stream gemacht!
- Server starten und stoppen geht
- Client connecten und disconnecten geht
- Nachrichten über Client Eingabe geht nicht (Client -> sendMSG(String msg))
Server.java
Code:
import java.io.*;
import java.net.*;
public class Server implements Runnable {
public static final String VERSION = "0.1";
protected static boolean isRunning = false;
private Thread connect;
private ServerSocket server;
protected java.util.Vector<Connection> users;
public Server(String ip) {
try {
server = new ServerSocket(Config.PORT);
} catch(IOException e) {
ChatServer.log.append("Error: The Socket can't be created!\n");
isRunning = false;
return;
}
users = new java.util.Vector<Connection>();
isRunning = true;
connect = new Thread(this);
connect.start();
}
public void run() {
try {
while(true) {
if(users.size() <= Config.MAX_USERS) {
Socket client = server.accept();
String chatuser = client.getInetAddress().getHostAddress();
ChatServer.log.append("New user "+chatuser+" is connecting ...\n");
users.add(new Connection(this,client));
ChatServer.log.append("Connection between user "+chatuser+" established!\n");
}
}
} catch(SocketException se) {
} catch(IOException e) {
ChatServer.log.append("Error: When waiting for connections!\n");
stopServer();
}
}
protected void stopServer() {
try {
connect.interrupt();
server.close();
ChatServer.log.append("Server stopped!\n");
isRunning = false;
} catch(IOException e) {
ChatServer.log.append("Error: When stopping the Server!\n");
}
}
public void broadcast(String line) throws IOException {
Connection user;
try {
for(int i=0;i<users.size();i++) {
user = users.elementAt(i);
user.out.writeBytes(line);
}
} catch(IOException e) {
throw new IOException();
}
}
}
Connection.java
Code:
import java.io.*;
import java.net.*;
public class Connection extends Thread {
protected Server server;
protected Socket client;
protected DataInputStream in;
protected DataOutputStream out;
public Connection(Server server,Socket client) {
this.server = server;
this.client = client;
try {
in = new DataInputStream(client.getInputStream());
out = new DataOutputStream(client.getOutputStream());
} catch(IOException e) {
try {
client.close();
} catch(IOException ioe) {
ChatServer.log.append("Error: The connection to user "+client.getInetAddress().getHostAddress()
+" can't be closed!\n");
}
ChatServer.log.append("Error: The connection stream can't be established!\n");
return;
}
this.start();
}
public void run() {
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line;
try {
while(true) {
line = br.readLine();
if(line != null)
server.broadcast(line);
}
} catch(IOException e) {
System.out.println(e.getMessage());
ChatServer.log.append("Error: When broadcasting the message!\n");
}
}
}
Client.java
Code:
import java.io.*;
import java.net.*;
public class Client implements Runnable {
public static final String VERSION = "0.1";
public static boolean isConnected = false;
protected Socket server;
private Thread connect;
protected DataInputStream in;
protected DataOutputStream out;
public Client(String ip) {
try {
server = new Socket(ip,Config.PORT);
in = new DataInputStream(server.getInputStream());
out = new DataOutputStream(server.getOutputStream());
} catch(IOException e) {
ChatClient.log.append("Error: Cann't connect to Server\n");
return;
}
ChatClient.log.append("Connected with Server: "+ip+"\n");
isConnected = true;
if(connect == null) {
connect = new Thread(this);
connect.start();
}
}
public void run() {
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line;
try {
while(true) {
line = br.readLine();
if(line != null) ChatClient.log.append(line);
}
} catch(IOException e) {
ChatClient.log.append("Error: Connection to Server cann't be established!\n");
disconnect();
}
}
protected void sendMSG(String msg) {
try {
if(msg != null) out.writeBytes(msg);
} catch(IOException e) {
ChatClient.log.append("Error: When sending the message!\n");
}
}
protected void disconnect() {
try {
connect.interrupt();
server.close();
isConnected = false;
ChatClient.log.append("Disconnected from Server!\n");
} catch(IOException e) {
ChatClient.log.append("Error: While diconnecting from Server!\n");
}
}
}