Hallo,
ich habe eine kleine Client-Server-App. Nun habe ich folgenden Code, um den Clienten zu starten:
Es klappt auch alles und die Klasse bleibt durch eine Endlosschleife der Klasse Client immer aktiv.
Nun möchte ich auf das Client-Objekt zugreifen. Nur wie kann ich es machen? Ich habe folgendes probiert:
Leider ergibt die Variable dort NULL, was ich nicht verstehen kann, da die Klasse Client ja nicht geschlossen wurde.
Wo kann der Fehler wohl liegen?
Der Vollständigkeitshalber hier noch die Klasse Client:
Wieso hat die Variable den Wert NULL und wie kann ich das verhindern?
ich habe eine kleine Client-Server-App. Nun habe ich folgenden Code, um den Clienten zu starten:
Java:
import java.net.*;
public class Execution_Client
{
public static Client client;
public Execution_Client() throws Exception{
client = new Client(InetAddress.getByName("127.0.0.1"),4447);
}
public static void main(String[] args) throws Exception {
Execution_Client create = new Execution_Client();
}
}
Nun möchte ich auf das Client-Objekt zugreifen. Nur wie kann ich es machen? Ich habe folgendes probiert:
Java:
if (Execution_Client.client == null){
System.out.println("No objekt");
System.out.println(Execution_Client.client);
}
getscreenshot.addActionListener(Execution_Client.client);
Wo kann der Fehler wohl liegen?
Der Vollständigkeitshalber hier noch die Klasse Client:
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
public class Client implements Runnable, ActionListener {
private PrintWriter printWriter;
private OutputStreamWriter outputstreamwriter;
private OutputStream outputstream;
private InputStream input;
private Socket clientSocket;
public Client(InetAddress IP, int port) {
clientSocket = null;
try {
clientSocket = new Socket(IP, port);
outputstream = clientSocket.getOutputStream();
outputstreamwriter = new OutputStreamWriter(outputstream);
printWriter = new PrintWriter(outputstreamwriter);
Thread sender = new Thread(this);
sender.start();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void closeClient() {
}
public void sendMessage(String nachricht) {
printWriter.println(nachricht);
printWriter.flush();
}
public void diw(){
System.out.println("Diw");
}
public void run() {
while (true) {
if (!clientSocket.isConnected()) {
try {
System.out.println("hi");
clientSocket.close();
System.exit(0);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == ServerGUI.getscreenshot) {
try {
File file = new File("c:/IMG_0065.jpg");
OutputStream out;
out = clientSocket.getOutputStream();
InputStream fileIn = new FileInputStream(file);
byte[] buffer = new byte[1024];
while (fileIn.available()>0){
out.write(buffer,0,fileIn.read(buffer));
}
fileIn.close();
}catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
System.out.println("Sende");
sendMessage("New Message");
try {
outputstream.close();
clientSocket.close();
System.exit(0);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
Wieso hat die Variable den Wert NULL und wie kann ich das verhindern?