Datentransfer bricht nicht ab

Status
Nicht offen für weitere Antworten.
S

Stiewen-222

Gast
Hi,

mein FileTransfer funktioniert zwar super, doch die Methode bleibt in der Schleife und kommt erst zur Ausgabe: Server: Datei Ende, wenn ich das Socket schliesse...

Koennt ihr mir vll helfen?

Code:
	public boolean receive_File ( String strFileName ) {
		// Sends the entered file to the client
        try {
        	FileOutputStream fosFile = new FileOutputStream ( new File ( strFileName ) );
        	
        	int intLen = 4096;
        	byte[] byBytes = new byte [ intLen ];
            while ( ( intLen = oisFromClient.read ( byBytes ) ) > -1 ) {
            	fosFile.write ( byBytes, 0, intLen );
            	fosFile.flush (  );
            	
            }
         
            fosFile.close (  );
            System.out.println ( "--- Server: Ende der Datei" );

        } catch (IOException ioe) {
			int intError = 15;
			System.out.println ( "Error " + intError + ": " + ioe.toString (  ) );
			return false;
			
        }
		
		return true;
	
	}
 
S

SlaterB

Gast
so ist das eben, welches Verhalten schwebt dir denn vor?
dass abgebrochen wird, wenn aktuell keine Daten zu empfangen sind?
und wenn mal ein paar Pakete hängen bleiben im Internet dann wird an beliebiger Stelle abgebrochen?

-1 kommt nur wenn der Socket zu Ende ist,
solange liefert ein read-Aufruf Daten, falls vorhanden oder wartet

schicke doch vor der Datei die Anzahl der Bytes als int-Wert,
dann kannst du dich beim Lesen danach richten
 
G

Guest

Gast
na, es geht mir ja nur darum, dass er aus der schleife da rauskommt.

ich kann das socket aber nicht schliessen, weil danach noch andere dinge gesendet werden sollen damit.

ich hatte auch schon die idee es so zu machen:

Code:
   	public boolean receive_File ( String strFileName ) {
		// Sends the entered file to the client
        try {
        	FileOutputStream fosFile = new FileOutputStream ( new File ( strDLDir + "/" + strFileName ) );
        	
        	int intMaxLen = 4096;
        	int intLen = intMaxLen;
        	byte[] byBytes = new byte [ intLen ];
            while ( ( intLen = oisFromClient.read ( byBytes ) ) > -1 ) {
            	fosFile.write ( byBytes, 0, intLen );
            	fosFile.flush (  );
            	
            	if ( intLen < intMaxLen )
            		break;
            	
            }
         
            fosFile.close (  );

        } catch (IOException ioe) {
			int intError = 15;
			System.out.println ( "Error " + intError + ": " + ioe.toString (  ) );
			return false;
			
        }
		
		return true;
	
	}

Sprich mit dem MaxLen, doch dann kommt eine java.io_OptionalDataException
 
S

SlaterB

Gast
weil du eine Abfrage
> if ( intLen < intMaxLen )
> break;
in deinem Code hast, kommt eine OptionalDataException?
dies ist nicht nachzuvollziehen,

die Abfrage ist durchaus eine Änderung,
hat aber immer noch das theoretische Problem, dass auch an beliebiger Stelle in der Übertragung abgebrochen wird, wenns mal Stau im Internet gibt,
sowie das praktische Problem, dass wohl nix passiert, wenn die Länger der Datei durch 4096 teilbar ist oder durch sonstige Umstände der letzte Block genau 4096 lang ist
 
G

Guest

Gast
Also, ich habe es hinbekommen.

Jetzt habe ich nur noch eine frage: Mein Programm funktioniert soweit wunderbar, wenn ich es im Editor (Eclipse UND JavaEditor vom bildungsministerium) auf nur einem rechner und auf zwei rechnern ausprobiere (connection auf einem rechner und connection zwischen zwei rechnern)

Doch wenn ich den client in eine jar datei packe, dann startet das programm, doch er bekommt keine verbindung mehr hin...

Kann mir das jemand erklaeren? ^^
 

Stiewen

Aktives Mitglied
Ich mach Server - Client verbindung.

Hab im Netz jetzt schon von 2 Leuten gelesen, dass sie das Problem hatten, wenn sie auf eine DB zugreifen wollten.
Der einer hat es behoben, indem er in der Konsole sich die Javaversion angezeigt hat mit java -version und das mit der MANIFEST-Datei gleichgestellt hat.
Der andere hat seine jar datei mit dem Jar-Editing-Tool fuer Eclipse gemacht und schon funktionierte es.

Beide Loesungen haben mir nicht weiter geholfen und ich kann es mir auch nicht erklaeren,
DENN: die GUI wird vollkommen und zu 100% richtig angezeigt. Das Programm, was in der Jar sitzt ist der Client und kann nur aus der Jar datei heraus keine Verbindung aufbauen...

Sehr seltsam... :(
 

Stiewen

Aktives Mitglied
es kommt keine ... das isses ja ^^

er laedt die GUI und macht nix weiter. er geht einfach nur ins Time-Out bei der funktion Socket.connect(...)

es scheint, als wenn er, wenn er aus der jar heraus startet, zwar den suchvorgang startet, doch keinen server findet.
 
T

tuxedo

Gast
Vermutlich hast du irgendwo ein try/catch block ins leere laufen lassen.

Damit das mit der DB funzt muss der DB treiber (das jdbc teil) im classpath sein.

- Alex
 

Stiewen

Aktives Mitglied
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ICH WILL KEINE DATENBANKVERBINDUNG EINRICHTEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Wie oft soll ich das denn noch schreiben ...
Danke aber fuer die Bemuehungen
 
T

tuxedo

Gast
Vermutlich hast du irgendwo ein try/catch block ins leere laufen lassen.... Wie oft soll ich das denn noch schreiben?

Ein Programm verweigert nicht auf einmal seinen Dienst ohne dabei irgend was zu sagen. Aber wenn man ihm aber den Mund verbietet darf man sich nicht wundern dass es schweigt. Also schau nochmal ob du nicht irgendwo eine Exception in einem catch-block hast ins leere laufen lassen.

Das mit dem Classpath sollte im übrigen nur als Ergänzung dienen weil du weiter oben noch von Manifest und JAR gefaselt hattest.

- Alex
 

Stiewen

Aktives Mitglied
Stiewen hat gesagt.:
er geht einfach nur ins Time-Out bei der funktion Socket.connect(...)

es scheint, als wenn er, wenn er aus der jar heraus startet, zwar den suchvorgang startet, doch keinen server findet.

-> catch ist also connection timed out

habs jetzt mit meiner lokalen ip probiert und das geht super.
bedeutet also, dass ich irgendwas mit fw, router, portforwarding, etc... falsch eingestellt haben muss.

jetzt wuerde ich doch gerne mal wissen, wie das icq und so macht, weil ICH fuer die ja keine ports freigeben muss. sind die schon fest verankert oder wie geht das?
 
T

tuxedo

Gast
Dir fehlt es offenbar and grundlegenden Netzwerkkenntnissen:

Ein Client verbindet sich mit einem Server. Der Server horcht auf einem speziellen Port.

Der Port gehört also zum Server. Ergo muss man den Server (bzw. dessen Firewall oder dessen Router) so einstellen, dass man von "aussen" an diesen Port dran kommt.

Der Client hat damit in der Regel nix zu tun. Nur "zu restriktive" (private) Firewalls blockieren auch ausgehende Verbindungen (ZoneAlarm ist da so ein Kandidat), so dass man auch beim Client was einstellen muss.

Man kann sich aber so in etwa merken: Wenn der ICQ-Client sich mit dem Server verbinden kann, dann sollte sich auch mein Pava-programm-Client sich mit dem Server verbinden lassen, ohne etwas anderes konfigurieren zu müssen als bei der ICQ Verbindung.

Skype geht da einen anderen Weg (google mal nach "udp hole punching"), braucht aber einen extra Server hierfür.

Ich schlage vor du malst mal eine Skizze wie dein Client und Server zueinander in beziehung stehen (router etc...). Dann lässt sich schon eher sagen warum die Verbindung nicht klappt und wo es hängen könnte.

- Alex
 

Stiewen

Aktives Mitglied
SKIZZE:

SERVER - ROUTER - INTERNET - CLIENT

mein router ist uebrigens der "THOMSON ST585"
- UDnP aktiv,
- Port freigegeben,
- FW disabled


heisst, dass mein server hinterm router sitzt und auf den client wartet. und nein, ich wusste alles, was du mir da geschrieben hast bzgl. der verbindung.
dann besteht doch eigentlich nur die frage, warum der client keine verbindung mit dem server eingeht.
 
T

tuxedo

Gast
Hast du am Router Portforwarding für den Server konfiguriert?

Wenn ja:

Starte mal am Client-Rechner eine Telnetverbindung:

START -> Ausführen -> Textfeld: "telnet 123.123.123.123 1234" -> OK

(statt 123.123.123.123 die IP des Servers eintragen und statt 1234 den Port der Serveranwendung).

Bleibt das Telnetfenster offen, hast du vermutlich am Client was falsch programmiert, weil prinzipiell die Netzwerkverbindung klappt.

Schließt sich das Telnetfenster unverzüglich wieder, hast du ein Netzwerkproblem. In dem Fall tippe ich auf Firewall/Portforwarding nicht richtig eingestellt.

- Alex
 

Stiewen

Aktives Mitglied
So, ich habe es hinbekommen!

Bei dem router gibt es einen link in dem menu, wenn man auf einen computer klickt und sich die daten davon ansieht. bei mir war das >MEINCOMPUTERNAME<

unten sind doch immer diese links mit hilfen, was man jetzt machen koennte. da ist auch der link "Öffentliche IP-Adresse einer Verbindung einem Gerät zuweisen"

Das habe ich gemacht. Es erscheint eine meldung, dass man lokal die ip adresse erneuern soll, was man ueber die eingabeaufforderungen
ipconfig /release
ipconfig /renew

erreicht. wichtig: beide und vor allem in der reihenfolge!

Hoffe ich konnte helfen :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Dit_ FTP FTP | Datentransfer unterbrechen Netzwerkprogrammierung 3
D Datentransfer? Netzwerkprogrammierung 4
K Java RMI bricht ab wenn Remote eine Methode ausgeführt werden soll Netzwerkprogrammierung 5
Dann07 Audio streamen bricht immer ab nach kurzer Zeit Netzwerkprogrammierung 6
T Download Programm - Download endet vorzeitig (bricht ab) Netzwerkprogrammierung 11
JavaDevOp Socket Status von UDP-Port prüfen (PortUnreachableException funktioniert nicht?) Netzwerkprogrammierung 32
A Bei FTP Übertragung wird Datei nicht komplett übertragen Netzwerkprogrammierung 2
B Multicast-Nachrichten-Empfang funktioniert nicht Netzwerkprogrammierung 5
M JAX-WS unter Java 17 plötzlich nicht mehr möglich Netzwerkprogrammierung 5
S BufferedStream funktioniert nicht immer Netzwerkprogrammierung 7
T OutputStream kommt nicht an Netzwerkprogrammierung 18
G UDP Packet empfangen funktioniert nicht. Netzwerkprogrammierung 16
L30nS RMI RMI-Server kann Dialog nicht volkommen anzeigen Netzwerkprogrammierung 2
L Server-Socket liest Input-Stream nicht Netzwerkprogrammierung 5
Tobero Java serversocket nicht nur zuganglich für localhost Netzwerkprogrammierung 6
T String von Client zu Server kommt nicht an Netzwerkprogrammierung 92
S .jar läuft local, aber nicht remote (SSH/Terminal) Netzwerkprogrammierung 10
Z Kann nicht Daten vom Server lesen Socket Netzwerkprogrammierung 10
J SSL haut nicht hin Netzwerkprogrammierung 3
A Socket-Anwendung (BufferedWriter/Reader liest nicht aktuellen Wert) Netzwerkprogrammierung 6
platofan23 Socket Java Socket mit DynDns nicht erreichbar Netzwerkprogrammierung 6
J Wechsel auf Jdk13 , sfpt funktionier nicht mehr Netzwerkprogrammierung 2
Dann07 Proxy funktioniert nicht so wie gewünscht! Netzwerkprogrammierung 18
B RESTful API weiß nicht weiter Netzwerkprogrammierung 2
L Kann VM nicht ueber Host Name finden Netzwerkprogrammierung 0
V Ich finde den Fehler nicht... Netzwerkprogrammierung 2
H Einfacher Server funktioniert nicht Netzwerkprogrammierung 1
T HTTPS-Requests an Server: POST-Parameter kommen nicht an Netzwerkprogrammierung 5
S Socket Webserver mit SSLSocket geht nicht Netzwerkprogrammierung 1
P RMI stub wird nicht gefunden Netzwerkprogrammierung 8
N Test Servlet funktioniert nicht Netzwerkprogrammierung 11
M com.google.gson wird nicht erkannt Netzwerkprogrammierung 2
M Socket Server antwortet dem Client nicht Netzwerkprogrammierung 6
J FTP Upload über Proxy funktioniert nicht Netzwerkprogrammierung 1
C Mini Client-Server-Anwendung funktioniert nicht Netzwerkprogrammierung 8
D FTP ListNames() funktinoniert nicht richtig Netzwerkprogrammierung 2
Thallius JDBC getConnection kommt nicht zurück Netzwerkprogrammierung 1
KingSquizzi3 Website parsen mit Hilfe von jsoup funktioniert nicht Netzwerkprogrammierung 3
J Java Server empfängt php inhalt nicht Netzwerkprogrammierung 1
V TCP Client funktioniert auf Emulator aber nicht auf Smartphone Netzwerkprogrammierung 5
P RMI - Neue eigene Instanz für jeden Aufruf auf nicht serialisierbares Objekt - wie? Netzwerkprogrammierung 0
F FTP FTPClient Datei lässt sich nicht öffnen Netzwerkprogrammierung 4
F Reader/ Writer werden nicht geschlossen Netzwerkprogrammierung 2
Z Verbindung zwischen 2 Rechnern über ServerSockets nicht möglich Netzwerkprogrammierung 3
F Java Server Scanner oder InputStream kann nicht gelsesen werden! Netzwerkprogrammierung 6
R Socket bei server.accept(); gehts nicht weiter Netzwerkprogrammierung 2
K Server liest Daten nicht Netzwerkprogrammierung 6
N RMI "RMI über Lan funktioniert nicht" & "RMI-Server im Lan scannen" Netzwerkprogrammierung 13
G Mail senden funktioniert nicht mit SSL Netzwerkprogrammierung 7
L IText mit Servlets, funktioniert nicht Netzwerkprogrammierung 0
E Gruppenchat: Über HTTPS oder nicht? Netzwerkprogrammierung 5
P nanoHttp upload.html page lädt nicht Netzwerkprogrammierung 4
M Byte Array kommt nicht an Netzwerkprogrammierung 0
X Daten können nicht sofort empfangen werden Netzwerkprogrammierung 1
D TCP Socket funktioniert nicht richtig Netzwerkprogrammierung 3
K ByteArray über Netzwerk senden klappt nicht Netzwerkprogrammierung 5
D Socket UDP Client reagiert nicht auf spontane Meldungen Netzwerkprogrammierung 5
C Servlet erstellen klappt nicht Netzwerkprogrammierung 3
A Socket Socket-Problem - Object wird nicht übertragen Netzwerkprogrammierung 3
S Socket (client) verbindet nicht Netzwerkprogrammierung 6
B Methoden und Konstruktoren von Java.net package werden nicht geladen Netzwerkprogrammierung 2
L Email versenden mit Java funktioniert nicht, Fehlermeldungen: MessagingException & SocketException Netzwerkprogrammierung 10
L Server anpingen (Pingzeit) ?? Pingzeit wird nicht verändert Netzwerkprogrammierung 6
C Portscanner funktioniert nicht! Netzwerkprogrammierung 8
M JSP wird im gesamten Projekt nicht neugeladen Netzwerkprogrammierung 3
B HTTP Webseite unter IP-Addresse nicht aufrufbar - unter Domain schon Netzwerkprogrammierung 9
K Chatprogramm - Server funktioniert nicht Netzwerkprogrammierung 5
A Socket ASCii Zeichen werden nicht per udp übermittelt. please help . Netzwerkprogrammierung 6
J Erster Server-Client läuft auf lokalem Rechner problemlos. Zwei Rechner über das Internet nicht Netzwerkprogrammierung 8
H HTTP Header Response kann nicht ausgelesen werden Netzwerkprogrammierung 4
K Socket InputStream wird nicht erzeugt Netzwerkprogrammierung 4
G FTP FTP-Client funktioniert nicht bei Modem-Verbindungen Netzwerkprogrammierung 8
R Socket SSL-Connect in Servlet - keystore wird nicht gefunden Netzwerkprogrammierung 2
D JNLP über Webstart funktioniert nicht... Netzwerkprogrammierung 2
V Socket Objekte werden nicht aktualisiert Netzwerkprogrammierung 2
F Kann Klasse nicht zu Servlet casten Netzwerkprogrammierung 5
T Server und Client verbinden nicht Netzwerkprogrammierung 6
M HTTP File Upload mit Prozessbar Funktioniert nicht. Netzwerkprogrammierung 8
K Socket byte Schleife beendet nicht Netzwerkprogrammierung 9
J FTP FTP funktioniert nicht. Netzwerkprogrammierung 5
M Socket Exception tritt auf - weiß nicht weiter Netzwerkprogrammierung 3
L Socket Client empfängt nicht Netzwerkprogrammierung 6
S anderer Rechner wird nicht gefunden Netzwerkprogrammierung 20
das-mo Client/Server sendet nicht Netzwerkprogrammierung 7
M Socket InputStream liest nicht vollständig Netzwerkprogrammierung 7
S soap kann nicht zu 127.0.0.1:8090 unter Windows verbinden Netzwerkprogrammierung 2
F RMI einfacher Chat - Callbacks(?) funktionieren nicht Netzwerkprogrammierung 7
X Änderung des Objekts wird nicht serialisiert Netzwerkprogrammierung 9
M Socket TCP keep alive Exception wird nicht ausgelöst Netzwerkprogrammierung 11
T Empfangen klappt Senden nicht - Connection timed out Netzwerkprogrammierung 12
R Client funktioniert nicht Netzwerkprogrammierung 2
C HTTP Content-Length nicht übermittelt!? Netzwerkprogrammierung 7
J Socket Chatserver aus dem Internet nicht erreichbar Netzwerkprogrammierung 19
S UDP Broadcast - Pakete kommen nicht immer an Netzwerkprogrammierung 15
D RMI URL nicht gefunden Netzwerkprogrammierung 2
M Senden von Daten nicht direkt möglich? Netzwerkprogrammierung 6
N Socket geht auf Windows, aber auf Mac nicht ? Netzwerkprogrammierung 3
Z Socket Connection reset by peer nur per IP nicht über localhost Netzwerkprogrammierung 13
M while-Schleife funktioniert nicht bei Nachrichtempfang von Server Netzwerkprogrammierung 3
P Socket IRC Client nicht kompatibel mit Server Netzwerkprogrammierung 30

Ähnliche Java Themen


Oben