# Java UDP File transfer



## Surinder (14. Juni 2011)

hallo an alle,

ich habe da einen Code gefunden und komme einfach nicht drauf wie man diesen richtig ausführt.

Der Source-Code ist hier unter UDP-Klient und UDP-Server zu finden.

Netzprogrammierung mit Java

Kann mir jmnd helfen, was ich tun muss damit ich eine Datei verschicken kann(vom Server zum Client)?

Alles was ich bis jetzt geschaft hab ist das ich den Server und den Klient in Eclipse starte...

Bitte helft mir ich werde noch WAHNSINNIG.
Bitte entschuldigt ich bin absoluter Beginner was Java angeht.


----------



## sheel (14. Juni 2011)

Hi und Willkommen bei tutorials.de 

Zeig bitte deinen aktuellen Code.
Am besten gleich in [code=java]...[/code] verpackt.

Und wo genau hast du Probleme?
Verbindung herstellen? Datei öffnen? ...?

Gruß


----------



## Technoblade (14. Juni 2011)

Das entscheidende ist, dass du dem Client Parameter mitgeben musst.
Denn in Zeile 19 und 20 des Clients wird auf die Argumente zugegriffen:


```
String file = argv.length > 0 ? argv[0] : "file";
        String host = argv.length > 1 ? argv[1] : "localhost";
```

argv enthält die Argumente die beim Programmstart mitgegeben werden. Davon ausgegangen, dass wir eine .jar-Datei haben und die so starten:
java -jar MyJar.jar C:/Test.txt 80

, wäre argv[0]= C:/Test.txt und argv[1]= 80


----------



## Surinder (14. Juni 2011)

hallo, danke VIELMALS FÜR DIE RASCHE ANTWORT, gibt es eine email adresse wo ich dir den code schicken kann?

wie mache ich das in Eclipse? wie gebe ich die Argumente in eclipse ein?

Ich weis wo Run/Run Configuration/Argumente, nur nicht wie die Argumente eingeben soll...


20        String host = argv.length > 1 ? argv[1] : "localhost";
21        InetAddress server = InetAddress.getByName(host);
22        int port = argv.length > 2 ?
23                           Integer.parseInt(argv[2]) : tftp.port;

Zeile 22 ist dann auch ein Argument, was meinst du?


----------



## Surinder (14. Juni 2011)

hallo danke fürs Antworten,

ich weis einfach nicht wie ich den code richtig ausführen soll, damit ich eine Datei vom Server zum Client schicken kann...; und die READ, DATA, ACK, ERROR wie gebe ich diese in der Eclipse Konsole ein?

ich arbeite mit Eclipse bitte um Rat, wie ich die Argumente einzugeben hab********
alles was ich weis ist wo ich eingebe und zwar Run/Run Configurations/Argumente, aber blos wie hat die Eingabe auszusehen, das ist mir ein großes Rätzel****?

ich habe dir den Code angehängt, wie wolltest, hoffe es passt so als .zip, konnte es nicht direkt als .java uploaden

danke
-surinder


----------



## SE (14. Juni 2011)

Erstmal : Hi und willkommen im Forum
zweitens : es reicht EINMAL zu klicken ... und dann WARTEN ... weil dein DOPPEL-Post resultiert daraus das du wie viele andere mal wieder keien geduld hattest und stumpf zweimal draufgeklickt hast ... gewöhn dir das bitte garnicht erst an
drittens : UDP macht sich nicht so gut für einen File-Transfer. Hier hat UDP zu viele Nachteile : Pakete können in anderer Reihenfolge wieder ankommen wie sie gesendet wurden , es wird nicht garantiert das ein Paket wirklich ankommt *sog. Packet-Loss* , kann leichter manipuliert werden als TCP , *einiges anderes mehr*.
viertens : da du noch ziemlicher Anfänger bist solltest du jetzt nicht uns mit solchen doch komplizierteren Sachen löchern sondern dir erstmal ein paar Grundlagen-Bücher aneignen und diese durcharbeiten. Es nützt nichts wenn wir dir jetzt ein funktionierendes Beispiel hier hinklatschen und dir dann noch 2 oder 3 zeilen schrieben wie du es starten / verwenden sollst. Davon lernst du auch nicht wie das Programm eigentlich funktioniert. Außerdem gibt es auch für Eclipse und seine Verwendung als Java-IDE auch zahlreiche Fachbücher die dir erklären wie du zum Beipsiel Parameter übergibst oder dein Projekt als Runnable-Jar exportierst und diese ganzen Dinge ...

Das ist jetzt nicht abwertent gemeint , aber ein wenig Eigeninitiative solltest du schon mitbringen ...


----------



## Surinder (14. Juni 2011)

SPiKEe hat gesagt.:


> Erstmal : Hi und willkommen im Forum
> zweitens : es reicht EINMAL zu klicken ... und dann WARTEN ... weil dein DOPPEL-Post resultiert daraus das du wie viele andere mal wieder keien geduld hattest und stumpf zweimal draufgeklickt hast ... gewöhn dir das bitte garnicht erst an
> drittens : UDP macht sich nicht so gut für einen File-Transfer. Hier hat UDP zu viele Nachteile : Pakete können in anderer Reihenfolge wieder ankommen wie sie gesendet wurden , es wird nicht garantiert das ein Paket wirklich ankommt *sog. Packet-Loss* , kann leichter manipuliert werden als TCP , *einiges anderes mehr*.
> viertens : da du noch ziemlicher Anfänger bist solltest du jetzt nicht uns mit solchen doch komplizierteren Sachen löchern sondern dir erstmal ein paar Grundlagen-Bücher aneignen und diese durcharbeiten. Es nützt nichts wenn wir dir jetzt ein funktionierendes Beispiel hier hinklatschen und dir dann noch 2 oder 3 zeilen schrieben wie du es starten / verwenden sollst. Davon lernst du auch nicht wie das Programm eigentlich funktioniert. Außerdem gibt es auch für Eclipse und seine Verwendung als Java-IDE auch zahlreiche Fachbücher die dir erklären wie du zum Beipsiel Parameter übergibst oder dein Projekt als Runnable-Jar exportierst und diese ganzen Dinge ...
> ...


 
Hey Spike,
zufällig kenne ich deine Sorte! Theorie-Bücher helfen in meinem Fall auch nicht weiter, denn diese habe ich bereits durchstöbert! Und bitte lesen lernen! Ich habe bereits wie du schon sagtest mehrmals hingeschrieben, dass ich zwar weis wohin ich ein Argument hinschreibe unter der Entwicklungsumgebung Eclipse, aber nicht wie!? Und ja es wäre für einen Anfänger wie mich schon sehr hilfreich wenn man hier Code hinklatschen täte und es funtkioniert! Denn manche von uns müssen tatsächlich an der Uni etwas abgeben. Und es ist ein UDP-TFTP aufbau gefragt. Die Deadline is morgen, sry das dir das Timing nicht passt, mir auch nicht ((=


----------



## SE (14. Juni 2011)

Dann hättest du vielleicht auch mal ganz oben in deinen ersten Post UDP-TFTP hinschreiben können ? Und nicht einfach UDP-File-Transfer ...
Was das mit Uni und Abgabe angeht : wir sind hier nicht die die DEINE hausaufgaben machen.
Was Eclipse angeht > GOOGLE
Meine Sorte ? Entschuldige bitte ... aber wenn ich nach "java tftp" google kommen genug seiten die sich damit befassen und auch hilfreich sind. Wenn man aber die Grundlagen nicht hat hilft das alles nichts.
Dessweiteren finde ich es etwas ... nun ja ... ungewöhnlich das euer Dozent euch aufgaben gibt die ihr nicht lösen könnt. Wir hatten hier schon so viele Threads *und auch nebenan im java-forum.org* beiden die Schüler es entweder nicht verstanden haben oder es garnicht verstehen wollten und dann alles auf ihre Lehrer schieben nach dem Motto : wurde uns nicht erklärt.
Alleine der Satz das Theorie Bücher nicht helfen zeigt mir : kein Funken Eigeninitiative von dir ... Wenn man etwas nicht versteht weil man es einfach nicht KANN ... das ist eine Sache ... aber wenn man etwas nicht verstehen WILL weil man unter anderem auch scheinbar zu faul ist ... so etwas unterstütze ich nicht.

Was deinen Link angeht : also noch mehr Source kann man eigentlich garnicht zur verfügung haben. Was genau ist da eigentlich noch dein Problem ? Einfach compilen und mit entsprechenden Parametern aufrufen. Dafür braucht man nicht mal Eclipse. Das kann man mit Notepad und CMD lösen. Du solltest dir auch erstmal klarmachen was genau TFTP ist und wofür es verwendet wird. Man kann es im Prinzip mit jeder Sprache machen die aufs EEPROM des NIC passt und von diesem auch ausgeführt werden kann. Wenn man das ganze jetzt abstrakt in Java als Modell nachbaut ist es sogar noch etwas einfacher da dinge wie DHCP und LOOKUP wegfallen da man ja in diesem Modell alle nötigen Informationen eintragen oder über Parameter mitgeben kann.

Was jetzt deine Abgabe dierekt betiftt : Copy&Paste mit nem Kommentar : war zu faul mir selbst was einfallen zu lassen.


----------



## genodeftest (14. Juni 2011)

Surinder hat gesagt.:


> gibt es eine email adresse wo ich dir den code schicken kann?


Nein, einfach hier im Forum in Code-Tags (siehe meine Signatur) posten.

In Eclipse kannst du Argumente eingeben, indem du auf dem Button "Run" (sieht aus wie ein Play-Button, nur in grün) auf den Pfeil klickst. Dann öffnet sich ein Menü, klicke "Rün Configurations" an, wähle deine Anwendung und gebe unter "Arguments" die Argumente/Parameter ein.

Als Anfänger solltest du dir mal die Grundlagen von Java aneignen, dazu eignet sich ein Buch, z.B. "Java ist auch eine Insel", http://openbook.galileocomputing.de/javainsel9/ (bis Kapitel 21 solltest du das auf jeden Fall durcharbeiten). Dort und auch unter http://download.oracle.com/javase/tutorial/reallybigindex.html findest du einige Informationen zu verschiedenen Themen, z.B. http://download.oracle.com/javase/tutorial/networking/index.html zum Thema Netzwerk/Datentransfer.



> Die Deadline is morgen, sry das dir das Timing nicht passt, mir auch nicht ((=


 etwas knapp oder?

btw: cool down...


----------

