Socket

Status
Nicht offen für weitere Antworten.

Kaladial

Bekanntes Mitglied
hi

ich hab folgenden Code:

Code:
sock = new Socket(ip, port); //Hier die Domain eintragen
out = new BufferedOutputStream(sock.getOutputStream());
in = new BufferedInputStream(sock.getInputStream());

nun möchte ich wissen wie ich den timeout verringern kann wenn bei
sock = new Socket(ip, port);

nix dran hängt....

weis das jemand?
thx für Hilfe
Kala
 

Kaladial

Bekanntes Mitglied
bringt nix ...

sock = new Socket(ip, port);

in der zeile kommt ja schon der fehler bzw braucht er ja schon solange wenn auf der anderen seite kein rechner ist...
und sowas in der art funktioniert ja net:

sock = new Socket(ip, port).setSoTimeout(20);
 

Kaladial

Bekanntes Mitglied
hmmm hatte ich auch überlegt ...
ich überleg nur wie ich dann den socket aufbau versuch unterbrechen soll ...

also wenn ich sag

geh in thread 1
-> mach in dem thread ne socket auf


geh in thread 2
-> warte 1 sec
-> guck ob thread 1 fertig is
-> nein -> stoppe thread 1

^^ so ungefähr hät ich mir das jetzt gedacht nur wird damit ja der versuch zu connecten net unterbrochen , da der thread ja trotzdem bis zum ende durchläuft und dann halt nur net neu beginnt oder?

also was ich mir überlegt hab is nen ping auf den zielhost zu schicken und wenn ne antwort kommt dann versuch ich verbindung aufzubauen... nur überlg ich grad ob es sowas wie nen ping befehl unter java gibt oder ob ich wieder das windows ping einbauen muss
 
S

SlaterB

Gast
> nur wird damit ja der versuch zu connecten net unterbrochen , da der thread ja trotzdem bis zum ende durchläuft und dann halt nur net neu beginnt oder?

welcher Thread? hilft sock.close() nicht?


da du wieder den Anschein gibst, in einer Welt ohne Suchmaschinen zu leben, hier noch zwei Links
http://www.coding-board.de/board/archive/index.php/t-4251.html

http://www.velocityreviews.com/forums/t146589-ping-class-java.html

so richtig helfen kann ich aber nicht bei der Sache und nur für dich zu suchen ist ja auch nicht hilfreich ;)
viel Erfolg noch
 

Kaladial

Bekanntes Mitglied
Code:
package AVS3;

import java.io.*;
import java.net.*;

public class Ping2 {
	public static long testConn(byte[] addr1, int port, int timeoutMs){
		//pass in a byte array with the ipv4 address, the port & the max time out required
		long start = -1; //default check value
		long end = -1; //default check value
		long total = -1; // default for bad connection
	
		//make an unbound socket
		Socket theSock = null;
		try {
			InetAddress addr = InetAddress.getByAddress(addr1);
System.out.println(addr);			
			SocketAddress sockaddr = new InetSocketAddress(addr,port);
		
			//Create the socket with a timeout
			//when a timeout occurs, we will get timout exp.
			//also time our connection this gets very close to the real time
			theSock = new Socket();
			start = System.currentTimeMillis();
			System.out.println("start:"+start);
			theSock.connect(sockaddr, timeoutMs);
			end = System.currentTimeMillis();
			System.out.println("end:"+end);
		} catch (UnknownHostException e) {
			start = -1;
			end = -1;
		} catch (SocketTimeoutException e) {
			start = -1;
			end = -1;
		} catch (IOException e) {
			start = -1;
			end = -1;
		} finally {
			if (theSock != null) {
				try {
					theSock.close();
				} catch (IOException e) {}
			}
			if ((start != -1) && (end != -1)) {
				total = end - start;
			}
		}
		return total; //returns -1 if timeout
	}
	
	public static void main(String[] args) {
		int port = 10000;
		int timeout = 1000;
		byte[] addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)1};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)5};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)6};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)7};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)8};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)9};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)10};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)11};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)12};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)20};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)21};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)22};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)20};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)20};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)21};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)22};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)20};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)21};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)22};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)20};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)21};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)22};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)5};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)6};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)7};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)8};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)9};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)10};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)11};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)12};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)20};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)21};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)22};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)20};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)20};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)21};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)22};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)20};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)21};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)22};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)20};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)21};
		System.out.println(Ping2.testConn(addr, port, timeout));
		addr = new byte[]{(byte)172,(byte)16,(byte)16,(byte)22};
		System.out.println(Ping2.testConn(addr, port, timeout));
	}
}


Erg:
Code:
/172.16.16.1
start:1190027226125
-1
/172.16.16.5
start:1190027227140
-1
/172.16.16.6
start:1190027228140
-1
/172.16.16.7
start:1190027229140
-1
/172.16.16.8
start:1190027230140
-1
/172.16.16.9
start:1190027231140
-1
/172.16.16.10
start:1190027232140
-1
/172.16.16.11
start:1190027233156
-1
/172.16.16.12
start:1190027234156
-1
/172.16.16.20
start:1190027235156
end:1190027235156
0
/172.16.16.21
start:1190027235156
-1
/172.16.16.22
start:1190027236171
-1
/172.16.16.20
start:1190027237171
end:1190027237796
625
/172.16.16.20
start:1190027237796
end:1190027237796
0
/172.16.16.21
start:1190027237812
-1
/172.16.16.22
start:1190027238812
-1
/172.16.16.20
start:1190027239812
end:1190027239812
0
/172.16.16.21
start:1190027239828
-1
/172.16.16.22
start:1190027240828
-1
/172.16.16.20
start:1190027241828
end:1190027241828
0
/172.16.16.21
start:1190027241828
-1
/172.16.16.22
start:1190027242828
-1
/172.16.16.5
start:1190027243828
-1
/172.16.16.6
start:1190027244828
-1
/172.16.16.7
start:1190027245828
-1
/172.16.16.8
start:1190027246828
-1
/172.16.16.9
start:1190027247828
-1
/172.16.16.10
start:1190027248828
-1
/172.16.16.11
start:1190027249828
-1
/172.16.16.12
start:1190027250828
-1
/172.16.16.20
start:1190027251828
-1
/172.16.16.21
start:1190027252843
-1
/172.16.16.22
start:1190027253843
-1
/172.16.16.20
start:1190027254843
end:1190027254843
0
/172.16.16.20
start:1190027254843
end:1190027254843
0
/172.16.16.21
start:1190027254859
-1
/172.16.16.22
start:1190027255859
-1
/172.16.16.20
start:1190027256859
end:1190027256859
0
/172.16.16.21
start:1190027256859
-1
/172.16.16.22
start:1190027257859
-1
/172.16.16.20
start:1190027258859
-1
/172.16.16.21
start:1190027259859
-1
/172.16.16.22
start:1190027260859
-1

also so ganz versteh ich mein derzeitiges problem nicht...
ich hab nur mitbekommen das wenn ich den timeout höher setzte der fehler seltener auftritt...


also kurze erklärung meines problems:
ich hab anhand des letzten links von Slater mir ne variante rausgesucht die eigentlich ganz gut funktioniert...
aber leider nur meistens und net immer...

ich hab euch den code und die ausgabe gepostet...
bei ip: 172.16.16.20 müsste er eigentlich immer eine endzeit zurück geben, macht er aber leider net... woran kann das liegen?

mfg Kala
 

sparrow

Top Contributor
Zu deinem anfänglichen Problem ganz oben:

Code:
Socket socket = new Socket();
socket.setSoTimeout(1000);
socket.connect(ip, port);
 

Kaladial

Bekanntes Mitglied
und je meher anfragen das werden um so schlechter wird die zeit die er braucht um nen socket auf und zu zu machen und da ich ja meine zeit net anpass läuft der irgendwann raus .... und dadurch zeigt der das später gar net mehr richtig an
 

sparrow

Top Contributor
Wieso das?
Deine Anfragen laufen doch nacheinander ab und nicht parralel.
Warum sollten die langsamer werden?

Gruß
Sparrow


Edit:
Was genau bezweckst du denn eigentlich?
Denn deine eigentliche Frage (wie man den Timout vor dem Connect ändert) ist ja eigentlich beantwortet.
Mir ist dein jetziges Problem irgendwie noch nicht ganz klar geworden.
 

Kaladial

Bekanntes Mitglied
ja das frag ich mich auch ...
aber ich hab einfach mal noch 20 dazu gepackt und anhand der kamera die ich auf der anderen seite von der 172.16.16.20 sitzen hab seh ich ja wann er sich connectet und wann net ... und es wird immer langsamer also bei 40 abfragen in meinem programm is der zeitversatz schon so groß:

1 anfrage programm -> 1 anzeige auf kamera

.
.
.
35. anfrage programm -> 33. anzeige auf kamera

und noch schlimmer ... also der thread is schon viel weiter als er eigentlich sein dürfte...
 

Kaladial

Bekanntes Mitglied
edit:

also ich hab nen netzwerk:
172.16.16.X

in diesem netzwerk sind an verschiedenen ips kameras angeschlossen

z.b. auf der 20 (hab derzeit nur eine dran sollen aber mehr werden)

so und nun will ich sowas wie ne geräte detection pasteln... also ich will das netzwerk abfragen ob da so ne kamera is .. und wenn ja soll sie dann später mit ip und namen angezeigt werden...

auf der kamera läuft nen programm welches ich abfragen kann... also wenn ich weis hier an der ip is was, schick ich als nächstes meinen befehl runter der den namen der kamera erfragt und so weiter
 

sparrow

Top Contributor
Mach doch mal ein Socket.close() wenn du ihn nicht mehr brauchst.
Da freut der sich.

Gruß
Sparrow
 

Kaladial

Bekanntes Mitglied
Code:
} finally { 
         if (theSock != null) { 
            try { 
               theSock.close(); 
            } catch (IOException e) {} 
         } 
         if ((start != -1) && (end != -1)) { 
            total = end - start; 
         } 
      }

wird doch gemacht
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Socket Server -> lesen von / schreiben zu php-script Netzwerkprogrammierung 6
B Versuch mit Socket etwas zu lesen und zu schreiben Netzwerkprogrammierung 15
G Socket Socket Kommunikation Netzwerkprogrammierung 1
L Server-Socket liest Input-Stream nicht Netzwerkprogrammierung 5
H Socket Kann ein Socket server 2 dimensionale Arrays empfangen und versenden? Netzwerkprogrammierung 3
D Socket-Verbindungen übers Internet Netzwerkprogrammierung 4
Z Kann nicht Daten vom Server lesen Socket Netzwerkprogrammierung 10
N Java socket Programmierung Filme verschicken Netzwerkprogrammierung 20
A TCP multiClientServer mit socket mittels ObjectOutputStream Netzwerkprogrammierung 12
A Socket-Anwendung (BufferedWriter/Reader liest nicht aktuellen Wert) Netzwerkprogrammierung 6
platofan23 Socket Java Socket mit DynDns nicht erreichbar Netzwerkprogrammierung 6
S Socket Bilder über Socket Senden Netzwerkprogrammierung 0
M Socket Socket lehnt Verbindung ab Netzwerkprogrammierung 3
x46 Connection reset by peer: socket write error Netzwerkprogrammierung 6
x46 Socket Files per Socket verschicken Netzwerkprogrammierung 1
platofan23 Probleme mit Socket bei Android Studio? Netzwerkprogrammierung 22
platofan23 Socket Hilfe mit Socket Thread und ArrayList Netzwerkprogrammierung 6
R Socket FATAL EXCEPTION MAIN bei Socket based client/server app Netzwerkprogrammierung 2
D new ObjectInputStream(socket.getInputStream()); Netzwerkprogrammierung 15
E Socket Frage Netzwerkprogrammierung 6
D ServerSocket - Socket Verbindungsart Netzwerkprogrammierung 3
T Frage bzgl. Socket-API Netzwerkprogrammierung 1
F TCP Socket auf Verbindungsabbruch prüfen Netzwerkprogrammierung 15
F Socket Verbindung mit Verschlüsselung und Authentifierzung Netzwerkprogrammierung 1
I Socket ObjectOutputStream-Socket: Objekt wird falsch übertragen Netzwerkprogrammierung 2
T Socket Socket connections schließen? Netzwerkprogrammierung 2
D Socket Socket OutputStream leeren? Netzwerkprogrammierung 3
T Socket Java Programm hängt sich auf bei dem versuch von einem Socket scanner Daten zu erhalten. Netzwerkprogrammierung 1
F Socket Socket in anderen Methoden Netzwerkprogrammierung 1
D Socket Run Args Client/Server Socket Netzwerkprogrammierung 1
M Problem bei Socket (MultiplayerSpiel) Netzwerkprogrammierung 4
I Socket Netzwerkprogrammierung 1
F Wiederverbinden nach socket Abbruch Netzwerkprogrammierung 1
J 1 Socket - 2 Serversocket Netzwerkprogrammierung 4
T Socket sendet erst nach socket.close() Netzwerkprogrammierung 2
F Socket Verbindungsaufbau abbrechen Netzwerkprogrammierung 3
P Socket Socket-Verbindung Input sehr langsam Netzwerkprogrammierung 1
I Socket Kommunikation C / Java Netzwerkprogrammierung 2
Joew0815 socket event handler Netzwerkprogrammierung 2
F Einfache Socket Verbindung Netzwerkprogrammierung 2
A Socket Socket Receive-/SendBuffersize Netzwerkprogrammierung 0
D Socket server auf Smartphone Netzwerkprogrammierung 9
H Socket Client/Server Socket Programmieren Netzwerkprogrammierung 1
A Socket Socket Server netcat Netzwerkprogrammierung 1
Shams Anfängerfrage zu Server-Socket-Kommunikation Netzwerkprogrammierung 2
M Socket String Arrays über Socket an Server schicken Netzwerkprogrammierung 2
D Socket Error: java.lang.NullPointerException Netzwerkprogrammierung 1
D TCP Socket funktioniert nicht richtig Netzwerkprogrammierung 3
X Problem mit vielen Bytes über Socket Netzwerkprogrammierung 23
B SSL Socket Netzwerkprogrammierung 2
A Socket Socket-Problem - Object wird nicht übertragen Netzwerkprogrammierung 3
M Client sendet nur, wenn das Socket geschlossen wird Netzwerkprogrammierung 53
R Dauerhaft offene Socket-Verbindung? Netzwerkprogrammierung 3
S Socket (client) verbindet nicht Netzwerkprogrammierung 6
G Socket Socket verbindung für Chat System Netzwerkprogrammierung 3
P Warum kann ich kein Socket aufbauen? Netzwerkprogrammierung 12
S Socket SSL Socket und Sun/Oracle Java Netzwerkprogrammierung 5
S Socket Socket Verbindung wiederherstellen Netzwerkprogrammierung 16
precoc Server Socket Start / Stop Netzwerkprogrammierung 5
N SOCKET mehrere Requests, keep Alive serverspezifisch? Netzwerkprogrammierung 3
S ImageIcon über Socket schicken (Serialisierung) Netzwerkprogrammierung 6
C Socket Systemsperren mit Socket Netzwerkprogrammierung 4
H Socket Objekte über Socket? Allgemeine Verständnisprobleme in Sachen Socket Netzwerkprogrammierung 3
D Socket Multithread-Socket | Kurz vor dem Ziel Netzwerkprogrammierung 7
C Datei über Socket schreiben und Ereignis lesen Netzwerkprogrammierung 9
D Socket Dynamische Socket-Thread Erzeugung Netzwerkprogrammierung 2
D Socket Socket absichtlich so schließen, dass Gegenseite java.net.SocketException: Connection reset wirft Netzwerkprogrammierung 4
J Socket Dateien über Socket auf Server speichern Netzwerkprogrammierung 3
S Socket-Frage zu einem LAN-Spiel. Netzwerkprogrammierung 3
A UDP verlorene Pakete/ socket.receive zu langsam Netzwerkprogrammierung 27
CookieSoft Socket Packet per Socket Netzwerkprogrammierung 8
CookieSoft Fehler bei Socket Netzwerkprogrammierung 4
D Socket Datei nur stückweise über Socket verschicken Netzwerkprogrammierung 6
T Per Socket auf POP3 zugreifen? Netzwerkprogrammierung 7
G Bild über Socket schicken - Client/Server Netzwerkprogrammierung 10
Z Socket Socket-Thread falsch? Netzwerkprogrammierung 5
Helgon Socket Socket IP Frage + Tutorial/Bücher Netzwerkprogrammierung 5
S Socket Verschiedene Exceptions beim Übertragen von Bildern über Socket Netzwerkprogrammierung 20
T Socket String zu Socket Netzwerkprogrammierung 26
M Datenübertragung per Socket nur alle 200ms Netzwerkprogrammierung 4
C Socket Socket: Connection timed out Netzwerkprogrammierung 3
T Socket blockierter Socket Netzwerkprogrammierung 4
C Socket Probleme beim Lesen und Schreiben aus/in einen Socket Netzwerkprogrammierung 2
T Alternative Socket mit Verbindungsabbruch Erkennung Netzwerkprogrammierung 2
M Socket, Ende Dateitransfer Netzwerkprogrammierung 4
X Über eine Socket-Verbindung Arrays übergeben Netzwerkprogrammierung 5
D RMI oder Socket Netzwerkprogrammierung 4
H Socket Socket listening Netzwerkprogrammierung 11
D Client Socket mit Eventlistener? Netzwerkprogrammierung 5
P Socket Verbindung über das Internet Netzwerkprogrammierung 2
A Socket Netzwerkprogrammierung 18
N Socket geht auf Windows, aber auf Mac nicht ? Netzwerkprogrammierung 3
ruffio1978 Telnet über ein socket ansprechen Netzwerkprogrammierung 8
G Exception: Connection reset by peer: socket write error Netzwerkprogrammierung 2
M SSl Socket Server und openssl key Netzwerkprogrammierung 3
J Socket Socket Programmierung. Wie anfangen? Netzwerkprogrammierung 4
DEvent Keine IOException beim schreiben Socket Netzwerkprogrammierung 3
A Socket Server: Message an verschiedene Clients senden Netzwerkprogrammierung 4
F Socket Verbindungen über mehrere Server Netzwerkprogrammierung 4
Dit_ FTP Download | "PassiveMode"-Socket öffnen Netzwerkprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben