wie prüfe ich , ob ein socket connected is

ryane

Mitglied
hallo leute ,
ich habe den folgenden code geschrieben womit ich mich auf ein server verbinde , nun soll mit die methode den status der verbindung zurückgeben. mit isConnected() und isBound() funktioniert leider nicht . weisst eine wie man es macht ?
Java:
Thread connector ;
 public boolean connect(){
     connector = new Thread(new Runnable(){public void run(){
         try {
            server = InetAddress.getByName("192.168.1.8");
            socketAddress = new InetSocketAddress(server, port);
            socket = new Socket();
        } catch (UnknownHostException ex) {
            return;
        }
        try {
            socket.connect(socketAddress , 8000);
        } catch (IOException ex) {
            return;
        }

         if(socket.isConnected()) { // schein nicht zu funktionieren
             conState = true;    // in dieser variable möchte ich den status meiner konnektion checken
         }

     }});
     connector.start();

     return ???????   // eigentlich conState aber geht nicht immer
    }
 
Wieso geht das nicht immer?

Welcher Fehler kommt?

Schon mal debug genutzt?

Ich gehe davon aus, das du einen Timeout bekommst und dann einfach return machst. Dann wird natürlich die entsprechende Variable nicht gefüllt.
 
Zuletzt bearbeitet von einem Moderator:
1) socket, socketAddress und conState sind nirgends deklariert.
2) Throwables sollten dringend gehandlet werden.
3) Für Rückgabewerte von Threads nimmt man Callable.
4) Warum so umständlich und nicht einfach per new Socket(IP, Port) verbinden?
 
Zuletzt bearbeitet:
1) socket, socketAddress und conState sind nirgends deklariert.
Diese variable sind schon deklariert worden , sind hier halt nicht zu sehen. sollte nicht das problem sein.
4) Warum so umständlich und nicht einfach per new Socket(IP, Port) verbinden?
ich habe socketAdress() benutzt, da man damit sehr einfach ein timeout setzen kann.
3) Für Rückgabewerte von Threads nimmt man Callable.
hast du da ein beispiel bitte? ich habe es noch nie benutzt. hier habe ich ein einziger thread der mir über eine variable sagen soll , ob mein socket verbunden ist.
2) Throwables sollten dringend gehandlet werden.
kein problem damit ich weisst wie man es behandelt und werde auch tun .

Mit ging es nur darum euch mein code zu damit damit ihr gegebensfall sagt wie ich mien connected state prüfen soll .

.@ marcinek

mit socket.isconnected() bekommt man immer den letzten connected zustand des socket , deshalb falls du ein mal connected war kriegst du dann immer wieder true
 
Java:
public static void main(String[] args)
{
	ExecutorService executorService = Executors.newFixedThreadPool(1);
	Future<Boolean> conFuture = executorService.submit(new Callable<Boolean>() {
		public Boolean call() throws Exception
		{
			Socket socket = new Socket("85.158.183.169", 80);
			return(!socket.isClosed());
		}
	});
	
	doSomething();
	
	try
	{
		boolean isConnected = conFuture.get();
		System.out.println(isConnected);
	}
	catch (InterruptedException e)
	{
		e.printStackTrace();
	}
	catch (ExecutionException e)
	{
		e.printStackTrace();
	}
	executorService.shutdown();
}
 
Zuletzt bearbeitet:
Der Ansatz des TO ist schon io.

Aber bei einer Exception wird die Variable nicht gesetzt.
 

Neue Themen


Zurück
Oben