Sockets übergeben

luke_duke

Mitglied
Hallo Leute,
ich hab da ein Problem und zwar möchte ich von meiner Klasse TimeServer gerne den Socket zurückgeben (IP-Adresse des jeweiligen geöffneten Clienten). Jedoch hab ich keine Ahnung wie ich das anstellen soll denn mein Socket bleibt ja immer null bis sich ein Client beim Server anmeldet und dadurch bekomme ich eine NullPointer EXCP.

TimeServer
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 
 * Server Klasse
 * 
 */
public class TimeServer implements Runnable {
	ServerSocket serverSocket;
	Socket clientSocket;
	OutputStreamWriter Osr;
	private int i;
	BufferedReader in;
	public boolean running = false;

	public TimeServer() throws IOException, InterruptedException {

	

	}

	/**
	 * ServerSocket wird angelegt (mit Port 12345) Danach wird eingstellt das
	 * der ServerSocket Verbindungen annimmt. Thread wird gestartet (mit
	 * Referenz auf ServerThread)
	 * 
	 * @throws InterruptedException
	 * @throws IOException
	 */
	public void sendTime() throws InterruptedException, IOException {
		while (running=true){
			
		serverSocket = new ServerSocket(12345);
		clientSocket = serverSocket.accept();
		Thread t1 = new Thread(new TimerServerThread(clientSocket));
		t1.start();
		serverSocket.close();
		}
	}


	public void startServer() {
		running = true;
	}

	public void stopServer() {
		running = false;
	}
	public boolean getRunstatus()
	{
		return this.running;
	}

	@Override
	public void run() {
		try {
			sendTime();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}
mfG
TimerServerThread
Java:
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket;

import java.text.SimpleDateFormat;
import java.util.Date;

public class TimerServerThread extends Thread {
	int i;
	Socket clientSocket;

	public TimerServerThread(Socket clientSocket) {
		this.clientSocket = clientSocket;
		
	}

	/**
	 * In der run-Methoden werden nun die Lottozahlen erzeugt und
	 * rausgeschrieben.
	 */
	public void run() {
		sendTime();
	}
		public void sendTime(){
		System.out.println("Verbunden mit " + clientSocket);
		OutputStreamWriter Osr = null;
		BufferedWriter bw =null;
		try {
			Osr = new OutputStreamWriter(clientSocket.getOutputStream());
			bw= new BufferedWriter(Osr);
			for (i = 0; i < 6; i++) {
				SimpleDateFormat formatter = new SimpleDateFormat(
						"yyyy.MM.dd 'at' HH:mm:ss ");
				Date currentTime = new Date();
				System.out.println("Zeit und Datum : "
						+ formatter.format(currentTime));
				bw.write("Zeit und Datum  " + formatter.format(currentTime));
				bw.newLine();
				bw.flush();
				
				Thread.sleep(1000);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public Socket getStatus() {
		return clientSocket;
	}
}
TimeServerGUI
Java:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;

public class TimeServerGUI extends JFrame implements ActionListener, Runnable {
	JButton bstartServer = new JButton("Run Server");
	JButton bstopServer = new JButton("Stop Server");
	JTextArea tAoutPutTa = new JTextArea();
	TimeServer srv;
	JPanel pControls = new JPanel();
	public boolean running = false;

	public TimeServerGUI() throws IOException, InterruptedException {
		setLayout(new BorderLayout());
		pControls.setLayout(new GridLayout(2, 2));
		pControls.add(bstartServer);
		pControls.add(bstopServer);
		add(pControls, BorderLayout.WEST);

		add(tAoutPutTa, BorderLayout.CENTER);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		srv = new TimeServer();
		bstartServer.addActionListener(this);
		bstopServer.addActionListener(this);
		setVisible(true);
		setSize(400, 400);

	}

	@Override
	public void actionPerformed(ActionEvent arg0) {

		Thread th2 = new Thread(srv);

		if (arg0.getSource().equals(this.bstartServer)) {
			System.out.println("Server started\n");
			if (srv.getRunstatus() == false) {
				this.tAoutPutTa.append("Server started\n");
				running = true;
				srv.startServer();
				th2.start();
			}
		}

		if (arg0.getSource().equals(this.bstopServer)) {
			if (srv.getRunstatus() == true) {
				running = false;
				srv.stopServer();
				this.tAoutPutTa.append("Server stopped\n");
			}
		}
	}

	public static void main(String[] args0) throws IOException,
			InterruptedException {
		TimeServerGUI gui = new TimeServerGUI();
		Thread th1 = new Thread(gui);
		th1.start();

	}

	public void run() {

	}

}
 

eRaaaa

Top Contributor
Moment, was ist jetzt überhaupt deine Frage? Wo tritt die Exception auf etc.?
Also mit accept() bekommst du doch das Socket-Objekt zurück.
[java=38]
clientSocket = serverSocket.accept();
Thread t1 = new Thread(new TimerServerThread(clientSocket));
[/code]

sollte doch an sich funktionieren? Wieso du da aber nochmal ein Thread mit new Thread() machst ist mir nicht ganz klar, deine Klasse TimeServerThread ist doch schon ein Thread? ;/

Java:
    public static void main(String[] args0) throws IOException,
            InterruptedException {
        TimeServerGUI gui = new TimeServerGUI();
        Thread th1 = new Thread(gui);
        th1.start();
 
    }
 
    public void run() {
 
    }

sieht auch etwas merkwürdig aus ?! Ein leeres run() macht nicht viel Sinn, allgemein das in einem neuen Thread zu legen ist eig. verkehrt, viel mehr solltest du die GUI-Erstellung vom EDT erledigen lassen

Lesson: Concurrency in Swing (The Java™ Tutorials > Creating a GUI With JFC/Swing)
 

XHelp

Top Contributor
TimeServer:
[JAVA=34]
public void sendTime() throws InterruptedException, IOException {
while (running=true){

serverSocket = new ServerSocket(12345);
clientSocket = serverSocket.accept();
Thread t1 = new Thread(new TimerServerThread(clientSocket));
t1.start();
serverSocket.close();
}
}
[/code]
Die Stelle sieht für mich merkwürdig aus. Wozu öffnest du jedes Mal aufs neue einen Server? Außerdem glaube ich, dass wenn du die Serververbindung kappst
Code:
serverSocket.close()
, dann ist auch dein clientSocket hinüber. Wahrscheinlich kriegst du auch deswegen die Exception.
 

XHelp

Top Contributor
Ne, damit erreichst du eigentlich fast schon das Gegenteil. Du startest und stoppst ständig den Server, somit ist dein Dienst nicht immer verfügbar.
Nimm
Code:
serverSocket = new ServerSocket(12345);
und
Code:
serverSocket.close();
aus der Schleife raus.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Socket Parameter über Sockets übergeben und auslesen ! Netzwerkprogrammierung 5
Jannn Socket Sockets an ein anderes Gerät weiterreichen? Netzwerkprogrammierung 8
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
B Socket Bilder verschicken via Sockets. Heap-Problem. Netzwerkprogrammierung 2
D Socket Verwirrung bei Sockets Netzwerkprogrammierung 1
E Mehrere Sockets Netzwerkprogrammierung 2
N Fragen zu Sockets Client Netzwerkprogrammierung 3
A Sockets Serialisierung Netzwerkprogrammierung 1
K Threads closen und Sockets schliessen Netzwerkprogrammierung 5
H Sockets oder HTTP- Methoden? Netzwerkprogrammierung 3
T Socket Bidirektionale Verbindung mit Sockets Netzwerkprogrammierung 8
P Problem mit Datagram-Sockets Netzwerkprogrammierung 2
C Socket Datagram-Sockets mit integrierter Message Queue? Netzwerkprogrammierung 2
M Problem Client - Server Sockets: .ready() wird nie true! Netzwerkprogrammierung 6
F Technologiewahl: Swing/RMI/Sockets Netzwerkprogrammierung 13
B Sockets, Threads & Plugins Netzwerkprogrammierung 7
T Verbindungsversuche über TCP Sockets von mehreren Threads führt zu Serverabsturz Netzwerkprogrammierung 2
D Mehrere Clients über Java-Sockets Netzwerkprogrammierung 13
F FTP Client mit Sockets - wann sagt der Server nichts mehr? Netzwerkprogrammierung 7
U Socket Abhören eines Sockets/Ports in extra Thread Netzwerkprogrammierung 8
M Socket Sockets Grundlage Netzwerkprogrammierung 25
I Socket HTTP Nachrichten über Sockets verschicken Netzwerkprogrammierung 2
D Socket Raw Sockets mit java.net.*? Bsp ICMP Netzwerkprogrammierung 7
H Komprimierte Sockets Netzwerkprogrammierung 4
V Verbindung zweier Rechner über das Internet mit Sockets Netzwerkprogrammierung 8
G NIO Sockets Architektur Problem Netzwerkprogrammierung 2
S Problem bzgl. Sockets / Server-Client-Struktur Netzwerkprogrammierung 3
B Socket Was muss man bei Sockets beachten? Netzwerkprogrammierung 10
N Socket Sockets und Events Netzwerkprogrammierung 11
A Programm umschreiben von Pipes auf Sockets Netzwerkprogrammierung 12
B Paralleler Dateitransfer: Ein Client - Mehrere Sockets? Wie connecten? Netzwerkprogrammierung 16
D RMI oder Sockets Netzwerkprogrammierung 4
P Sockets +Port Forwarding = Chaos Netzwerkprogrammierung 4
clupus Exception beim Schließen eines Sockets Netzwerkprogrammierung 6
Q Thread und Sockets... Netzwerkprogrammierung 2
G Sockets und HTTP: Ende des Datenempfangs erkennen Netzwerkprogrammierung 3
J Array oder Object über Sockets Netzwerkprogrammierung 8
O Sockets -- Einsieg Netzwerkprogrammierung 3
S Sockets und gzip Netzwerkprogrammierung 8
B Nachricht über Sockets kommt nicht an Netzwerkprogrammierung 8
data89 Sockets: ein alter Hut - für Euch - für mich nicht! Netzwerkprogrammierung 10
S Wiedereinmal Sockets ;-) Netzwerkprogrammierung 15
J Ascii / Unicode bei Sockets? Netzwerkprogrammierung 2
G Datagram-Sockets für UDP-Kommunikation Netzwerkprogrammierung 2
K "Ende eines Sockets" Netzwerkprogrammierung 9
A Sockets Netzwerkprogrammierung 10
feuervogel Sockets - Lokalen Port aber nicht IP bestimmen Netzwerkprogrammierung 3
C Einfacher Filedownload mit Sockets geht nicht für pdffiles Netzwerkprogrammierung 16
E Sockets, readLine() Netzwerkprogrammierung 7
M Sockets und InputStream Netzwerkprogrammierung 8
G Verbindung über Sockets Netzwerkprogrammierung 2
S zip-files über sockets übertragen Netzwerkprogrammierung 11
G immer wieder gleiche Sockets Netzwerkprogrammierung 2
V Suche Alternative zu Sockets Netzwerkprogrammierung 3
E Problem bei Sockets/InputStream über externe Klasse Netzwerkprogrammierung 5
A Datenverlust (zuviele Daten!) über Sockets Netzwerkprogrammierung 4
AlClemento Sockets -> BufferedReader Problem Netzwerkprogrammierung 2
F Problem mit Threads und Sockets Netzwerkprogrammierung 3
B Übertragung via Sockets Netzwerkprogrammierung 12
C Dateien über Sockets versenden? Netzwerkprogrammierung 10
T Sockets Verständnisfrage: abwechelnd lesen-schreiben Netzwerkprogrammierung 4
S Habe ein Problem mit Sockets -> Client Server Netzwerkprogrammierung 2
G Strings über Sockets senden Netzwerkprogrammierung 5
P Probleme mit einem Array aus Sockets Netzwerkprogrammierung 2
Y buch: Netwerprogrammierung und Sockets Netzwerkprogrammierung 2
B Eigenes Protokoll über Sockets verschicken Netzwerkprogrammierung 4
P Welche Art von Sockets für ein Spiel? Netzwerkprogrammierung 3
C Sockets über Internet Netzwerkprogrammierung 10
K Applet - Servlet Kommunikation ohne Sockets Netzwerkprogrammierung 5
S Objekte zwischen Client und Server über Sockets senden Netzwerkprogrammierung 2
Z chat: wann http und wann sockets verwenden? Netzwerkprogrammierung 11
D Java Sockets Probs Netzwerkprogrammierung 4
N Verarbeitung nach Weiterleitung in Sockets Netzwerkprogrammierung 2
A Serialisierung über Sockets möglich? Netzwerkprogrammierung 3
M sockets (security) Netzwerkprogrammierung 2
C IRC CHAT auslesen -> Sockets/input und output Streams Netzwerkprogrammierung 9
E Bilder übergeben Netzwerkprogrammierung 16
E Socket Werte mit DataInput- und Output- Stream übergeben Netzwerkprogrammierung 1
B Daten an Javaprogramm per URI Aufruf übergeben Netzwerkprogrammierung 7
M Java Eingabe auf FTP Server übergeben Netzwerkprogrammierung 4
L HTTP Daten an Server übergeben Netzwerkprogrammierung 2
B Eigene Objekte per RMI übergeben Netzwerkprogrammierung 2
X Über eine Socket-Verbindung Arrays übergeben Netzwerkprogrammierung 5
M String an PHP Script aus Java übergeben Netzwerkprogrammierung 12
O Methoden vom Server zu Client übergeben Netzwerkprogrammierung 2
H Objekt von JSP an Servlet übergeben Netzwerkprogrammierung 4
T rmi ssl zu große Objekte übergeben -> Exception Netzwerkprogrammierung 10
P Buchstaben übergeben Netzwerkprogrammierung 12
C Webservice, ArrayList übergeben Netzwerkprogrammierung 3
A Streams per RMI übergeben Netzwerkprogrammierung 6
D HTTP Request erstellen (Form Name übergeben!) Netzwerkprogrammierung 3
D wie kann ich rmic ein .jar file übergeben? Netzwerkprogrammierung 3
E In Webseite einloggen/ GET, POST an PHP-Script übergeben Netzwerkprogrammierung 2
A RMI wie kann ich objekte übergeben? Netzwerkprogrammierung 5
M IP Adressen auslesen und in Windows/Linux übergeben Netzwerkprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben