hi,
ich versuche seit einigen stunden mich mit sockets vertraut zu machen aber irgendwie komme ich nicht weiter...,
das endprodukt soll dann eine art chat-room sein..(ich weis gibts im FAQ, hat mir aber bei meinem prob nicht geholfen)
so erstmal war der plan: mehrere clients bauen verbindung zum server und der antwortet immer dem client der etwas gesendet hat das gleiche zurück (quasi ein echo-server mit multithreading...)
leider sagt mit der client nach der ersten nachricht(also bei der zweiten) immer socked closed...,
dabei habe ich meines wissens nach den socket gar nicht geschlossen...
ich bin mir sicher das das ein *an den kopfgreif*-problem für die meisten ist ^^trotzdem,
wäre super wenn ihr mir sagen könntet was da nicht passt, ich denke es is irgendwas grundlegendes...
hier mal code von server und client:
server:
CLient:
btw:
--> das is auskommentiert weil ich dann immer einen broken pipe- error bekomme...
greetings faulk
ich versuche seit einigen stunden mich mit sockets vertraut zu machen aber irgendwie komme ich nicht weiter...,
das endprodukt soll dann eine art chat-room sein..(ich weis gibts im FAQ, hat mir aber bei meinem prob nicht geholfen)
so erstmal war der plan: mehrere clients bauen verbindung zum server und der antwortet immer dem client der etwas gesendet hat das gleiche zurück (quasi ein echo-server mit multithreading...)
leider sagt mit der client nach der ersten nachricht(also bei der zweiten) immer socked closed...,
dabei habe ich meines wissens nach den socket gar nicht geschlossen...
ich bin mir sicher das das ein *an den kopfgreif*-problem für die meisten ist ^^trotzdem,
wäre super wenn ihr mir sagen könntet was da nicht passt, ich denke es is irgendwas grundlegendes...
hier mal code von server und client:
server:
Java:
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.ClassNotFoundException;
import java.lang.Runnable;
import java.lang.Thread;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
private ServerSocket server;
private int port = 30000;
public Server() {
try {
server = new ServerSocket(port);
} catch (IOException e) {
System.out.println(e.toString());
}
}
public static void main(String[] args) {
Server example = new Server();
example.handleConnection();
}
public void handleConnection() {
System.out.println("Waiting for client message...");
while (true) {
try {
Socket socket = server.accept();
new ConnectionHandler(socket);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
class ConnectionHandler implements Runnable {
private Socket socket;
public ConnectionHandler(Socket socket) {
this.socket = socket;
Thread t = new Thread(this);
t.start();
}
public void run() {
try
{
//
// Read a message sent by client application
//
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
String message = (String) ois.readObject();
System.out.println("Message Received: " + message);
//
// Send a response information to the client application
//
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
//oos.writeObject(message);
ois.close();
oos.close();
socket.close();
System.out.println("Waiting for client message...");
}
catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
CLient:
Java:
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.ClassNotFoundException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Client{
private static int port = 30000;
private static ObjectOutputStream oos;
public static void main(String[] args) {
try {
Scanner s = new Scanner(System.in);
System.out.println("Welcome!");
System.out.print("Enter Port:");
//port = s.nextInt();
System.out.println();
InetAddress host = InetAddress.getLocalHost();
Socket socket = new Socket(host.getHostName(), port);
new ServerListener(socket);
while(true)
{
System.out.print("Message:");
String m = s.next() +"";
oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(m);
System.out.println();
oos.close();
}
}
catch (UnknownHostException e) { System.out.println("Unkown Host!");}
catch (IOException e) {System.out.println("IOException:"+e.toString());}
}
}
class ServerListener implements Runnable {
private Socket socket;
public ServerListener(Socket socket) {
this.socket = socket;
Thread t = new Thread(this);
t.start();
}
public void run() {
//
// Read a message sent by client application
//
System.out.println("Listener is starting...");
while(true)
{
try
{
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
String message = (String) ois.readObject();
System.out.println("Message Received: " + message);
ois.close();
}
catch (IOException e) { }
catch (ClassNotFoundException e) {}
}
}
}
btw:
Java:
//oos.writeObject(message);
greetings faulk