ein Server mit mehre Cleint
Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Chat Server/Client Java
Hallo Zusammen,
ich habe ein klein problem bei der Compiliereung, ich weisse nicht , wo komme die Fehler.Ich habe diese Fehler
[color=crimson]
Exception in thread "Thread-0" java.lang.NullPointerException
at tools.Server.run(Server.java:47)
at java.lang.Thread.run(Thread.java:744)
[/color]
Hier code fuer der Server
package tools;
import java.io.*;
import java.net.*;
import java.util.*;
/**
* @author dng
*
*/
public class Server implements Runnable {
ServerSocket server;
int port;
private BufferedReader socket_in;
private PrintWriter socket_out;
private Socket clientSocket;
public List<ConnectionHandler> cHandler =new ArrayList<>();
public Server(int port){
this.port=port;
}
//Verbindung Server-Client
@Override
public void run() {
//public void verbindungClientServer(){
// TODO Auto-generated method stub
try {
server= new ServerSocket(port);
System.out.println("waiting for connection request from client");
while(true){
try {
clientSocket = server.accept();
ConnectionHandler handler = new ConnectionHandler(clientSocket);
cHandler.add(handler);
new Thread(handler).start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(clientSocket.getInetAddress()+" is connected");
String message="welcome to Server";
String msg=message.toString() + '\n';
socket_out.println(msg);
// socket_out.flush();
//clientSocket.close();
/* socket_out.print(socket_in.readLine());
socket_out.flush();*/
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String []args){
new Thread(new Server(9075)).start();
// TODO Auto-generated method stub
}
}
Hier Code fuer ConnectionHandler
**
*
*/
package tools;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.SocketTimeoutException;
import java.util.*;
/**
* @author dng
*
*/
public class ConnectionHandler implements Runnable{
Socket conHandsocket;
volatile boolean interrupted;
ConnectionHandler(Socket conHandsocket) {
this.conHandsocket = conHandsocket;
}
@Override
public void run() {
// TODO Auto-generated method stub
//Ein Handler der Verbindung aller Clients Verbindung
try {
System.out.println("waiting for connection request from client");
conHandsocket.setSoTimeout(100);
BufferedReader socket_in = new BufferedReader(new InputStreamReader(conHandsocket
.getInputStream()));
PrintWriter socket_out = new PrintWriter(conHandsocket.getOutputStream(), true);
//conHandsocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Hier Client
package tools;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
/** @author Eugen Labun */
public class Client {
Socket clientsocket;
int port;
private BufferedReader socket_in;
private PrintWriter socket_out;
private String name;
private String host;
public Client( String host, int port) {
this.port = port;
this.host = host;
}
public void verbindungAufbau() {
try {
clientsocket = new Socket(host, port);
verbindungAufbau();
socket_in = new BufferedReader(new InputStreamReader(clientsocket.getInputStream()));
socket_out = new PrintWriter(clientsocket.getOutputStream(),true);
String message=(String)socket_in.readLine();
System.out.println(" Message from server: "+message);
//clientsocket.close();
//socket_out.flush();
} catch (IOException ex) {
/*}finally{
try {
clientsocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
}
}
public static void main(String[] args) {
//new Thread(new Client("localhost", 9075)).start();
new Client("localhost",9075).verbindungAufbau();
}
/*
@Override
public void run() {
// TODO Auto-generated method stub
try{
verbindungAufbau();
socket_in = new BufferedReader(new InputStreamReader(clientsocket.getInputStream()));
socket_out = new PrintWriter(clientsocket.getOutputStream(),true);
String message=(String)socket_in.readLine();
System.out.println(" Message from server: "+message);
clientsocket.close();
socket_out.flush();
}catch(Exception e){
}finally{
}
}*/
}
Du initialisierst socket_out im Server nie, d.h. er ist immer null.
Außerdem ist es keine gute Idee, dass sich verbindungAufbau() im Client selbst aufruft.
ok, alles klar,danke