Chat Server/Client Java

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.

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