# Wie kann man .txt Files übers Internet verschicken?



## JJK3 (21. Nov 2012)

Wie kann man .txt Files übers Internet verschicken?
Für ein Chat Programm wüsst ich das gern!!
Oder wenn das geht würde es auch reichen einen String zu verschicken!!

Hat jemand eine wie das zu realisieren ist?

Nach möglichkeit ohne server sondern von computer zu computer!!

Danke


----------



## trääät (21. Nov 2012)

ganz primitiv :

verbindung aufbauen
daten lesen
über socket senden
auf der gegenseite vom socket lesen
und wieder als file rausschreiben

bei weiteren fragen poste bitte direkt im netzwerk-forum ...


----------



## JJK3 (21. Nov 2012)

Kannste mir nicht sagen wie man die einzelnen Schritte bewerkstelligt?


----------



## Marcinek (21. Nov 2012)

Wie sieht dein Ansatz aus?

Hast du mal gegoogelt, wie man das macht? - Strings verschicken ist das primitivste, was man machen kann.

Das steht schon millionenfach im Internet. Vor allem wenn du schon ein chat hast, dann siehst du es.


----------



## träät (21. Nov 2012)

erstens mal das ... also das ein chat dir schon alle grundlagen liefert ... und zweitens findest du alles was du brauchst zum thema "daten via socket" auch mehrfach mit den unterschiedlichsten lösungen wie ich bereits sagte im netzwerk-subforum ... oder halt bei google ...

es bedarf also keiner mehrfachen wiederholung von bereits gesagtem


----------



## JJK3 (21. Nov 2012)

Hab im Internet jetzt mal genauer geguckt und naja ich finde zwar chat programme die über server laufen, aber keine direkte verbindung.

Hast du nen link oder so?

Danke


----------



## Marcinek (21. Nov 2012)

Zwischen Server und Client gibt es immer eine direkte Verbindung.

Wie sieht bei dir die Planung aus? - Hast du zwei Clients? - Wenn ja, dann muss einer davon ein Socket öffnen und der andere verbindet sich damit.


----------



## trääät (21. Nov 2012)

naja ... ohne "Server" wird es schon komplizierter ... denn das einzige was wirklich 100% ohne server auskommt ist UDP mit direkten angaben der ziel-IPs und -Ports ... ansonsten brauchst du immer einen server ... gleich ob als normale TCP-broadcast-schleuder oder als STUN-helper ...


----------



## JJK3 (21. Nov 2012)

Meine Idee ist:
Der eine ist sozusagen der Host, der/die andere/n der Client.
Aber ich hab keine Ahnung wie man das Technisch macht!!

Danke


----------



## trääät (21. Nov 2012)

gut ... das würde dann aber wieder vorraussetzen das mindestens einer in seinem router die ports frei gibt ... und sowas sollte man vermeiden ...

wenn es dir nicht möglich ist einen STUN-helper zu organisieren klick dich wirklich mal bitte durchs mitlerweile mehrfach erwähnte netz-forum ... dort haben wir auch eine möglichkeit des STUN-helpers mit hilfe eines free-hosters erörtert ... sollte meiner ansicht nach auch genau so funktionieren ... auch wenn polling nicht wirklich das gelbe vom ei ist ...

deinen fragen kann man entnehmen das du scheinbar über keinerlei wissen für das thema verfügst ... da frage ich mich ernsthaft wie du dann einen "chat" zusammen bekommen hast (vermutlich irgendwo demo-code kopiert) ...

du solltest dich erstmal grundsätzlich mit dingen wie File-I/O, Streams, Sockets und ein bisschen allgemeinwissen über netzwerkprogrammierung beschäftigen ...
es gibt zwar halbwegs fertige lösungen ... aber wenn du nicht mal bereit bist diese zu suchen obwohl dir schon gesagt wurde wo und nach was ... dann solltest du nicht erwarten das dir hier jemand wirklich schritt für schritt "den brei vorkaut" ...


----------



## JJK3 (21. Nov 2012)

Naja,

Ich komme mit File und Streams zurecht.
Aber von Ports und Sockets hab ich keinerlei ahnung, geschweige denn ports freizugeben. Wie man Code-Technisch so etwas bewerkstelligt!!!

Danke


----------



## trääät (21. Nov 2012)

gut ... wenn du erkannt hast was du noch nicht kannst von dem was du brauchst dann weist du doch zumindest was du dir jetzt mal zu gemüte führen solltest ... ergo : gibt die begriffe bei google ein und versuch so viel wie möglich an informationen zu bekommen ... erstmal grundlagen und dann speziell für java ...
bis du mit sowas einfach aus der rückhand umgehen kannst brauchts allerdings ein paar tage bis wochen und intensives training ...

wie ich ja bereits sagte : ich kann mir irgendwie nicht vorstellen wie du an einen chat gekommen bist obwohl dir die grundalgen dazu fehlen ... aber solltest du da was halbwegs brauchbares haben kannst damit ja mal anfangen ...

auch immer wieder gerne : Java Platform SE 7 ... da findet sich defintiv ALLES
und kommt jetzt bitte nicht mit "gibts das auch auf deutsch" ... denn wirklich : wer programmieren will sollte schon englisch können


----------



## JJK3 (29. Nov 2012)

Chill 

Kann ich nicht meinen PC zum "Server" machen?
Sodass sich dann alle Clients zu mir verbinden!?

P.S.: hab mich mal über Sockets informiert, habs auch geblickt nur weitergeholfen hats mir nicht sonderlich!!


----------



## freez (29. Nov 2012)

JJK3 hat gesagt.:


> Kann ich nicht meinen PC zum "Server" machen?



natürlich. Ist zwar nicht der Weg, den man Standardmäßig geht, aber klar ... es geht. Du musst nur sicherstellen, dass dein "PC" für die Clients erreichbar ist (Bedenke Firewall / DSL Router wenns übers INet ist).



JJK3 hat gesagt.:


> Aber von Ports und Sockets hab ich keinerlei ahnung, geschweige denn ports freizugeben. Wie man Code-Technisch so etwas bewerkstelligt!!!



Das wäre aber Voraussetzung, wenn du so eine Anwendung entwickeln möchtest. Egal ob dein PC der "Server" ist, oder einer im Rechenzentrum

[EDIT]Was mir spontan einfällt: Im Netz gibt es jede Menge Beispiele (vielleicht sogar hier im Forum): java simple chat example. Da sollte doch was zu finden sein, was du dir anschauen kannst. Wenn du diese einfachen Beispiele verstehst, sollte es doch kein Problem sein. Und wenn nicht ???:L : wir sind hier und beantworten gern deine Fragen  [/EDIT]


----------



## Trolllllll (29. Nov 2012)

JJK3 hat gesagt.:


> Wie kann man .txt Files übers Internet verschicken?



E-Mail-Programm auch 
Mailadresse des Empfängers bei neuer e-Mail angeben
Die .txt-Datei als anhang anhängen
Senden drücken
Ist ziemlich simple, aber wow es funktioniert, sogar über das i-net, nicht nur zum Nachbar-PC
Ansonsten ja schau dir mal die Beispiele zu Java-Chats an, gibt es zu genügent im i-net, programmiere das dann selber und bei Problemen, diese dann hier im Forum stellen ;-)


----------



## JJK3 (29. Nov 2012)

Trolll


----------



## Trolllllll (29. Nov 2012)

JJK3 hat gesagt.:


> Trolll


Wolltest du *Toll* oder *danke Trolllllll* schreiben, da es dir geholfen hat?
Auf jeden Fall gern geschen ;-)


----------



## JJK3 (29. Nov 2012)

Um ehrlich zu sein, beides ein bischen!!       
Hab dich nämlich nicht ganz verstanden!!  
Aber kann mir nicht einfach jemand sagen wie ich ports freigebe??
Anstatt mich in Seitenlangen Abhandlungen, dafür fertigzumachen nichts bei google zu finden??
(Im Notfall kann ja einer ein google ergebnis zittieren!?)

Danke


----------



## Trolllllll (29. Nov 2012)

Da ich nicht weiß, was für einen Router du verwendest,... eher schlecht, aber gehe auf deinen Router und dort müsst es sowas wie Portweiterleitung oder so geben, und da musst du dann deinen gewünschten Port an deine IP-Adresse deines PC-weiterreichen ;-)


----------



## trääät (29. Nov 2012)

ich schließ mich mal meinem namens-faker und seinem e-mail post an ...

@TO
wenn du es auf biegen und brechen nicht hinbekommst ... und ich denke mal ein großteil der probleme dürfte sein das du dich mit den nötigen klassen und den dazu nötigen informationen nicht genug beschäftigst ... dann lass es doch halt einfach ...

es bringt nichts wenn dir jetzt hier einer n stück code schreibt den du dann nicht einsetzen kannst weil dir eben das eine oder andere halt einfach fehlt ... oder eben das wissen dafür ...

und dann wäre ne e-mail echt der einfachste weg ...

es wurde jetzt mehr als oft genug auf ganz simple chat-beispiele verwiesen ... denn die bieten alles was man braucht ... und wenn es nur text sein soll kann man diese codes sogar direkt so nutzen wie sie sind ... nur musst du dich auch mal damit beschäftigen und dich durch viele seiten text und hilfe lesen ... und das auch wirklich begreifen und verstehen ...
denn es ist genau so witzlos dir hier duzende wiki- und foren-artikel zu linken oder gar zu zitieren wenn du diese nicht verstehst ...

nur im gegensatz zu manch anderen sagst du uns aber auch nur "rall ich nich" ... anstatt mal wirklich zu sagen WAS GENAU du eben nicht verstehst und wobei du fragen hast wie das oder jenes funktioniert ...

langsam verliert man echt den nerv weil man sich wie der letzte **** vorkommt wenn man dir helfen will ... von dir aber nicht mal rüberkommt das du es versuchst ... und dann hat man auch irgendwann keine lust mehr weil man ja eh doch nur gegen ne wand redet ... zumindest geht es mir so ...

ich wiederhole es jetzt ein allerletztes mal und werd mir dann so deine weiteren erfolge kommentarlos ansehen : es wurde ALLES notwendige genannt was man braucht um das was du vorhast umzusetzen ...
entweder du nutzt jetzt mal selbst google und versuchst das auch zu verstehen und zu begreifen ... und kannst dann gerne hier fragen zu KONKRETEN problemen stellen ...
oder du lässt es einfach bleiben und nutzt etablierte standards ... denn du bist ja mit deinem wissensstand scheinbar nicht mal in der lage VORLAGEN zu nutzen und zum laufen zu bekommen


----------



## Olli_M (29. Nov 2012)

Für den Anfang ist es sicher auch nicht verkehrt, die Client- und die Serveranwendung erstmal auf demselben PC laufen zu lassen. Klassisches Beispiel Port 8189 und localhost (statt IP Adresse).
Dazu muss man normalerweise auch nix freischalten.

Wenn das dann lokal funktioniert, dann hat man ja schon den Hauptteil von dem Code, den man braucht. Dann den Schritt zu machen, und die 2 Programme auf 2 PCs zu verteilen, und dieses Mal mit IP Adresse zu verbinden statt localhost, ist ja nicht mehr so wild.

Olli


----------



## JJK3 (29. Nov 2012)

Zitiere mich mal selbst:
Aber kann mir nicht einfach jemand sagen wie ich ports freigebe??

[EDIT]Danke Oli-Ich guck mal!![/EDIT]


----------



## Marcinek (29. Nov 2012)

Steht doch schon weiter oben.

Versteh nicht, wieso man hier noch Googleergebnise hinkopieren muss.

Einfach mal googeln.


----------



## trääät (29. Nov 2012)

JJK3 hat gesagt.:


> Zitiere mich mal selbst:
> Aber kann mir nicht einfach jemand sagen wie ich ports freigebe??



ERSTENS : WARUM SOLLTEN WIR ? du kannst bitte selbst googlen ...

ZWEITENS : WIE KÖNNTEN WIR ? es hängt vom router selbst ab wie es genau geht ... es ist zwar bei vielen sehr ähnlich ... aber wenn ich dir jetzt sage wie es bei mir geht ... und dein menü anders ist kommt von dir mit 100%iger sicherheit sowas wie : "gibt es bei mir nicht" ...


----------



## JJK3 (29. Nov 2012)

OMG sag es mir doch einfach und das Problem wär beendet!

[EDIT]Hab übrigens mal was ganz simples ausprobiert:

CLIENT:

```
import javax.swing.*;
import java.net.*;
import java.io.*;

public class Client {
    Socket clientSocket;
    JFrame f = new JFrame();
    JLabel l = new JLabel("3fdsvgsdvasdvsd ");
    public static void main(String[] args) {
        Client c = new Client();
        c.los();
    }
    
    public void los() {
        try {
            clientSocket = new Socket("127.0.0.1", 8189);
            f.setVisible(true);
            f.setSize(743,342);
            f.add(l);
            InputStreamReader inStream = new InputStreamReader(clientSocket.getInputStream());
            BufferedReader inStream_reader = new BufferedReader(inStream);
            l.setText(inStream_reader.readLine());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
```

UND:

SERVER

```
import javax.swing.*;
import java.net.*;
import java.io.*;

public class Server {
    ServerSocket serverSocket;
    public static void main(String[] args) {
        Server v = new Server();
        v.los();
    }
    
    public void los() {
        try {
            serverSocket = new ServerSocket(8189);
            
            while (0==0) {
                Socket clientVerbindung = serverSocket.accept();
                
                PrintWriter pW = new PrintWriter(clientVerbindung.getOutputStream());
                pW.print("hhhfdshf");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
```

Hab jeweils ne .jar drauß gemacht und gestartet!!
(Server zuerst)

Das JFrame der Client Klasse öffnet sich, aber das Label mit dem Schwachsinns text erscheint nicht!!
Geschweige den der neue, vom Server empfangene, Text!![/EDIT]


----------



## TKausL (29. Nov 2012)

KÖNNEN WIR NICHT!
Gib bei google "Router XYZ portweiterleitung" ein und du wirst zu 100% was finden.

BTW: Was soll das da werden wenns fertig ist?

```
while (0==0) {
```


Edit:

Dein server sendet:

```
pW.print("hhhfdshf");
```

Dein CLient empfängt:

```
inStream_reader.readLine()
```

Fällt dir denn garnicht auf, dass der Server garkeine "Line" sendet, die du mit readLine auslesen könntest?
(Eine "Line" endet mit einem Zeilenumbruch!!!)


----------



## trääät (29. Nov 2012)

wie ich bei zweitens sagte : wie KÖNNEN es nicht ... denn wir wissen nicht welchen router du hast ... das weist nun mal nur du ... ergo musst auch du selbst bei google : "port forwarding ROUTER-MODEL" eingeben ...

zum code :
von abgesehen das du wie TKausL schon sagte vom server keine line sendest aber im client eine einlesen willst addest du das label erst nach dem anzeigen ... das das so nicht geht lernt man in grundlagen gui ...
entweder du addest das label vorher ... und du rufst nach dem adden sowas we revalidate() auf damit das label dann auch angezeigt wird ...
sonst so an sich ist der code ... naja ... ungewöhnlich ... wobei ich while(0==0) so auch noch nie gesehen habe ...


----------



## Ark (29. Nov 2012)

TKausL hat gesagt.:


> Fällt dir denn garnicht auf, dass der Server garkeine "Line" sendet, die du mit readLine auslesen könntest?


Wie sollte es? Hier ist ja jemand anscheinend extrem lernresistent und glaubt, Programmieren (bzw. die Verwendung von Computern auf dieser Ebene) ginge halt ohne ein tiefergehendes Verständnis für die Materie.

Ark


----------



## trääät (30. Nov 2012)

ich kenn da noch so n kandidaten mit ähnlichem wissensstand und ähnlichen fragen ... nur bringt dieser hier es deutlich besser zum ausdruck als der andere ...

aber ansonsten : ein wahres wort wurde gesprochen


----------



## JJK3 (30. Nov 2012)

Ok das mit dem Router guck ich mir mal an bevor mir hier noch jemand ne Morddrohung schickt :shock:

TKlausL

```
while (0==0) {
```
Soll heißen

```
while (true) {
```
kommt auf gleiche!!

Und danke für den Tipp das print und println ein Unterschied sein könnte der alles kauputt macht, aber wenn ich println schreibe ändert das nichts!!


----------



## Marcinek (30. Nov 2012)

Bei mir geht es.


----------



## JJK3 (30. Nov 2012)

Komisch,
muss ich vieleicht doch irgendeinen Port freigeben?


----------



## Trolllllll (30. Nov 2012)

Kam da von deiner Firewall ein Pop-up?
Dann musst du es da erlauben oder die Firewall zum testen mal auschalten


----------



## JJK3 (30. Nov 2012)

Hört sich jetzt vieleicht ganz peinlich an, aber meine Firewall ist aus und ich versuche schon seit Tagen sie wieder an zu kriegen...
Ohne Erfolg, deswegen:

Nein, kein Pop-up!!


----------



## Ark (30. Nov 2012)

Tja, ich würde mal sagen, hier hat einfach keiner Lust, dir die Grundlagen zum Arbeiten in Netzen zu verklickern. (Dass sie dir fehlen, zeigst du ja in ungefähr jedem deiner Beiträge hier.) Nur mit diesen Grundlagen (insbesondere IPv4 und NAT) ist es überhaupt möglich, die Ursachen der hier beschriebenen Probleme zu lokalisieren.

Deswegen solltest du dich dringend in die Grundlagen einlesen, sonst wird das hier gar nichts. Linux (vielleicht auch iDinger, weiß ich gerade nicht) eignet sich hervorragend, um mit Programmen wie 
	
	
	
	





```
ifconfig
```
, 
	
	
	
	





```
netstat
```
, 
	
	
	
	





```
ping
```
, 
	
	
	
	





```
host
```
, 
	
	
	
	





```
tcpdump
```
/
	
	
	
	





```
wireshark
```
, 
	
	
	
	





```
netcat
```
, 
	
	
	
	





```
nmap
```
/
	
	
	
	





```
zenmap
```
 diese Grundlagen auch praktisch zu erlernen und sein Wissen zu erproben.

Wenn du das hingekriegt hast, kannst du a) dein Problem selbst lösen oder b) Fragen so stellen, dass wir dir hier auch helfen können.

Ark


----------



## trääät (30. Nov 2012)

@TO
das while(0==0) eine endlosschleife werden soll dürfte UNS mit sicherheit allen klar sein ... denn 0==0 entspricht true ... und ein loop der im kopf nur true stehen hat ist eben eine endlosschleife ... auch wenn deine umsetzung sehr ungewöhnlich ist so zeigt es das du nicht mal elementare grundlagen drauf hast ...

um es dir mal GANZ ausführlich zu beschreiben bedeutet while() folgendes

wiederhole folgenden block so lange "bool" wahr ist

in deiner fassung wird nun "bool" gegen "ist es wahr das 0==0 wahr ist" ausgetauscht was im CPU selbst einen enormen overhead erzeugt ...

schreibt man dagegen gleich true so wird lediglich "bool" gegen "true" getauscht ... das spart dann ganze 2 ops sowie ne menge JMP zeilen ...


weiter im text

das print > println keinen wirklichen unterschied macht ist mir bei deinem code auch kein wirkliches rätzel ... da ja wie ich bereits angedeutet habe nach dem aufbau nicht mal das label angezeigt werden dürfte ... wenn doch > zufall ...
mal von abgesehen das du einfach den socket und dessen streams irgendwo in der luft hängen lässt anstatt sie anständig wieder zu schließen fehlt es hier wohl nicht nur an grundlagen in punkto netzwerktechnik sondern generell wissen wie man überhaupt richtig mit streams und anderen closeables umgeht ...
wenn man sowas im produktiven umfeld nutzen würde hätte man bei ner starken auslastung einen server-crash binnen sekunden bis wenige minuten ...


zum "ports freigeben"

in der regel sollte eine gute firewall erstmal alles blockieren was der user nicht eingestellt hat ...
leider haben viele heutige firewalls bereits ne lange liste an programmen die trotzdem so druch dürfen ... ist immer lästig der firewall hinterher zu räumen ...
also ja : grundsätzlich muss in der firewall schon gestattet werden das java erstmal über haupt ne verbindung aufbauen darf ... und dann zusätzlich noch das es auch serversockets öffnen darf ...
aber da java über digital signaturen verfügt und von den meisten firewalls alleine am namen erkannt und nur noch mit nem hash geprüft wird sollte das bei den meisten schon so in der freigabe-tabelle drinstehen ...

oder meinst du mit port-freigabe etwa doch port-forwarding ?

wenn du deine firewall abgeschaltet hast und nun aber nicht mehr ans laufen bekommst gibt es dafür ein paar gründe

1) die firewall verweigert den dienst auf grund einer anderen bereits aktiven firewall
2) es fehlen updates wesshalb der gesamte controller nicht will
3) der paket-filter wurde beschädigt bzw manipuliert
4) in der zeit wo du die firewall in-aktiv hattest hat sich ein schädling ins system eingenistet und blockiert nun die firewall komplett ...


zum schluss : wir reißen dir eigentlich eher den ***** auf anstatt den kopf ab ... aber wie wir alle bereits mehrfach sagten : wir können dir nicht verraten wie man in deinem speziellen fall irgendwo irgendwelche ports freigibt oder port-forwarding einrichtet ... denn das kannst du erstens bitte selber googlen ... und zweitens : wenn du es selbst nicht findest uns ja mal sagen was du so an soft- und hardware verwendest ... wobei ich auch bezweifle das du das halbwegs so genau hinbekommst das man dir sinnvoll helfen könnte


@Ark
ich würde TO jetzt nicht unbedingt in die unix-welt freilassen ... alle gennanten grundlagen kann man auch durchaus mit windows erlangen ... und zur not gibt es fast alles dank cygwin portiert ...


----------



## Ark (30. Nov 2012)

trääät hat gesagt.:


> ich würde TO jetzt nicht unbedingt in die unix-welt freilassen ... alle gennanten grundlagen kann man auch durchaus mit windows erlangen ... und zur not gibt es fast alles dank cygwin portiert ...


Cygwin? Ist das nicht dieses Mordsding von Patch, das eine schlechte Spielekonsole in eine halbwegs brauchbare Arbeitsumgebung verwandelt? :joke:

(Mal davon abgesehen, hat man mit Cygwin auch wieder nur ein halbes *nix, und da ist es wohl sinnvoller, vor allem zu Lehr- und Lernzwecken gleich ein richtiges *nix-System aufzusetzen.)

Ich gebe zu, dass ich lange nicht mehr wirklich viel mit Windows zu tun hatte; mein Eindruck war aber, dass mit jeder neuen Windows-Version die Netzwerkverwaltung immer komplizierter wurde, weil man bei M$ wohl meinte, immer mehr Details verstecken zu müssen. Dazu gleich zwei Zitate:


			
				https://wiki.archlinux.org/index.php/The_Arch_Way hat gesagt.:
			
		

> Arch Linux developers and users believe that trying to hide the complexities of a system actually results in an even more complex system, and is therefore to be avoided.


Und:


			
				http://www.heise.de/security/news/foren/S-Re-Idiotentest/forum-243740/msg-22788811/read/ hat gesagt.:
			
		

> Immer mehr Leute nutzen Techik die sie immer weniger verstehen.
> Ausserdem wird den Leuten ja immer mehr Zeug vorgekaut und bei vielen
> Dingen weniger eigene Denkleistung gefordert. Der Schilderwald im
> Straßenverkehr ist auch ein gutes Beispiel. Einfach nur noch nach den
> ganzen Schildern richten, Situationen beurteilen ist überflüssig.


Unter diesen Gesichtspunkten erscheint mir Windows mehr und mehr als eine Umgebung, die schlecht für solche Zwecke geeignet ist.

Vielleicht liege ich aber auch komplett falsch und Windows ist wirklich nicht so katastrophal. Das mit Linux war auch mehr nur ein Vorschlag. Wenn Windows also tatsächlich geeignet erscheint und hilft, kann der TO natürlich gern darauf zurückgreifen. :bahnhof:

Ark


----------



## JJK3 (1. Dez 2012)

Mein Code funktioniert jetzt warum nicht?
Weil ich die Streams nicht schließe? (Sorry, hab ich halt vergessen-passiert mir irgendwie immer...)


----------



## tröööt (1. Dez 2012)

@Ark
hmm .. dann solltest du dir mal ein ordentlich XP Pro oder Win 7 ansehen ...
alle nötigen commandline-tools die du aufgezählt hast gibt es auch unter windows ... wenn auch mit teilweise anderem namen
und WireShark ist ja grundsätzlich ein tool eines jeden netzwerk-entwicklers ...

@TO
das kann ich dir jetzt so nicht bewantworten da ich um diese zeit eigentlich nicht wirklich mehr die lust habe jetzt deinen code zu kopieren , ihn zu korrigieren , dann festzustellen das meine variante funktioniert ... dir das mitzuteilen und dir dann zu versuchen zu erklären wie man richtig debuggt ...


----------



## JJK3 (1. Dez 2012)

Ist ja unglaublich,
hab die reader und Writer geschlossen nun gehts!!
Ist so wichtig und trotzdem vergesse ich es immer!!
Sollte mir es vieleicht an den Monitor kritzeln! :lol:
Naja Danke jedenfalls, ich glaub darauf kann ich jetzt aufbauen!!

Das ihr andauernd sagt ich hätte keine Ahnung von Netzwerk-programmierung stimmt,
ich wollte damit anfangen aber der Code den ich gepostet habe hat ja nicht funktioniert, deswegen wusst ich nicht wie ich weitermachen sollte!!!


----------



## MR_UNIX (1. Dez 2012)

Es wäre nett, wenn du den jetzigen Code noch einmal posten könntest. Mir ist vorhin etwas aufgefallen und würde gerne sehen, ob und wie du das jetzt gelöst hast.


----------



## JJK3 (1. Dez 2012)

*CLIENT*


```
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.awt.event.*;
import java.awt.*;

public class Client {
    Socket clientSocket;
    BufferedReader inStream_reader;
    PrintWriter clientOut;
    JFrame f = new JFrame();
    JTextField eingabe = new JTextField(10);
    JTextArea textarea = new JTextArea(20,30);
    JScrollPane pane = new JScrollPane(textarea);
    JPanel panel1 = new JPanel();
    JPanel panel2 = new JPanel();
    public static void main(String[] args) {
        Client c = new Client();
        c.los();
    }
    
    public void los() {
        try {
            f.setVisible(true);
            f.setSize(500,500);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.add(BorderLayout.NORTH,panel1);
            f.add(BorderLayout.SOUTH,panel2);
            panel1.add(textarea);
            textarea.setEditable(false);
            panel2.add(eingabe);
            eingabe.addActionListener(new EingabeListener());
            
                    clientSocket = new Socket("127.0.0.1", 8189);
                    InputStreamReader inStream = new InputStreamReader(clientSocket.getInputStream());
                    inStream_reader = new BufferedReader(inStream);
                 clientOut = new PrintWriter(clientSocket.getOutputStream());
          //  Thread Abfrage = new Thread(new AbfrageThread());
           // Abfrage.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    class EingabeListener implements ActionListener {
        public void actionPerformed (ActionEvent e) {
            try {
                clientOut.println(eingabe.getText());
                clientOut.flush();
                eingabe.setText("");
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }
    
    class AbfrageThread implements Runnable {
        public void run() {
            String message;
            try {
                while ((message = inStream_reader.readLine()) != null) {
                    textarea.append(message+"\n");
                    Thread.sleep(1000);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
```

*SERVER*


```
import javax.swing.*;
import java.net.*;
import java.io.*;

public class Server {
    JFrame serverFrame = new JFrame("Server-controll");
    ServerSocket serverSocket;
    JTextArea l = new JTextArea("");
    public static void main(String[] args) {
        Server v = new Server();
        v.los();
    }
    
    public void los() {
            serverFrame.setVisible(true);
            serverFrame.setSize(743,342);
            serverFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
            serverFrame.add(l);
        try {
            serverSocket = new ServerSocket(8189);
            
            while (true) {
                Socket clientVerbindung = serverSocket.accept();
                
                InputStreamReader serverInput = new InputStreamReader(clientVerbindung.getInputStream());
                BufferedReader serverInput_reader = new BufferedReader(serverInput);
                String message = serverInput_reader.readLine();
                l.append(message);
                PrintWriter pW = new PrintWriter(clientVerbindung.getOutputStream());
                pW.println(message);
                pW.flush();
                pW.close();
                serverInput_reader.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
```

*Übrigens es funktioniert noch nicht!!
Wenn jemand ne Idee hat...
Der Server bekommt die Daten, aber sendet sie nicht korrekt zurück!!*

DANKE


----------



## MR_UNIX (1. Dez 2012)

Was fehlt denn bei der Rücksendung? Mir fällt spontan auf, dass er nur die bekommenen Zeichen sendet aber die neuen Sachen aus der TextArea ignoriert d.h. wenn man was da eingibt wird es nicht gesendet.


----------



## JJK3 (1. Dez 2012)

Alles fehlt bei der Rücksendung!!
Also nur damit ich weiter experimentieren kann hätte ich gerne das man dem Client Textfield etwas eingeben kann, das wird dann an den server gesendet und der sendet das gleiche dann zurück zum Client, welcher es dann in das eigene Textfield schreibt!!

Das JFrame des Server hab ich nur gemacht um zu testen ob beim server was ankommt!!

Danke


----------



## TKausL (1. Dez 2012)

```
//  Thread Abfrage = new Thread(new AbfrageThread());
           // Abfrage.start();
```

Kein wunder...



> Das JFrame des Server hab ich nur gemacht um zu testen ob beim server was ankommt!!



"Normale" Programmierer machen dafür ein Sysout, kein JFrame :lol:


----------



## trääät (1. Dez 2012)

gott ... bei dem code dreht sich mir aber immer noch gewaltig der magen um ...

da du ja scheinbar wirklich unfähig bist zu googlen ... oder geschweige denn einfach mal ins netzwerkforum zu gehen hier mal ein ganz einfacher chat mit JApplet als client

in diesem code ist WIRKLICH ALLES was du brauchst ... gut ... mit ausnahme der "datei-übertragung" selbst ...

Server

```
import java.io.*;
import java.net.*;
import java.util.*;
public class Server
{
	private ServerSocket serverSocket=null;
	private Vector<ClientRunnable> clients=null;
	private static Server server=null;
	public static void main(String[] args)
	{
		System.out.println("start-up chat-server");
		server=new Server();
		server.startup();
		System.out.println("start-up complete");
	}
	private Server()
	{
		System.out.print("try to create ServerSocket ... ");
		try
		{
			serverSocket=new ServerSocket(12345);
		}
		catch(Exception e)
		{
			System.out.println("failed to create ServerSocket");
			e.printStackTrace();
			System.exit(1);
		}
		System.out.println("ok");
		clients=new Vector<ClientRunnable>();
	}
	private void startup()
	{
		System.out.print("setting up accept-thread ... ");
		Thread thread=new Thread(new Runnable()
		{
			public void run()
			{
				while(true)
				{
					try
					{
						Socket client=serverSocket.accept();
						ClientRunnable clientRunnable=new ClientRunnable(server, client);
						(new Thread(clientRunnable)).start();
						clients.add(clientRunnable);
					}
					catch(Exception e)
					{
						System.out.println("failed to accept client");
						e.printStackTrace();
					}
				}
			}
		});
		System.out.println("ok");
		System.out.println("starting accept-thread");
		thread.start();
	}
	protected void broadcast(String msg)
	{
		for(ClientRunnable client : clients)
		{
			client.send(msg);
		}
	}
	protected void disconnect(ClientRunnable client)
	{
		clients.remove(client);
	}
}
```

Client

```
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ClientApplet extends JApplet
{
	private Socket socket=null;
	private BufferedReader in=null;
	private PrintStream out=null;
	private JTextField jTextField=null;
	private JTextArea jTextArea=null;
	public ClientApplet()
	{
		setLayout(new BorderLayout());
		setBackground(Color.LIGHT_GRAY);
		setForeground(Color.BLACK);
	}
	public void init()
	{
		jTextField=new JTextField();
		jTextField.setBackground(Color.WHITE);
		jTextField.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				try
				{
					String msg=jTextField.getText();
					if(!msg.equalsIgnoreCase("DC"))
					{
						out.println(msg);
					}
					jTextField.setText("");
				}
				catch(Exception ex)
				{
					jTextArea.append(ex.toString()+"\n");
				}
			}
		});
		jTextArea=new JTextArea();
		jTextArea.setBackground(Color.WHITE);
		jTextArea.setEditable(false);
		this.add("South", jTextField);
		this.add("Center", jTextArea);
	}
	public void start()
	{
		try
		{
			socket=new Socket(this.getCodeBase().getHost(), 12345);
			in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
			out=new PrintStream(socket.getOutputStream());
		}
		catch(Exception e)
		{
			jTextArea.append(e.toString()+"\n");
			jTextArea.append("cant connect to server");
			return;
		}
		jTextArea.append("connected\n");
		(new Thread(new Runnable()
		{
			public void run()
			{
				String line="";
				while(true)
				{
					try
					{
						line=in.readLine();
						if(line==null)
						{
							break;
						}
						if(line.equals(""))
						{
							continue;
						}
						jTextArea.append(line+"\n");
					}
					catch(Exception e)
					{
						jTextArea.append(e.toString()+"\n");
					}
				}
				jTextArea.append("ERROR");
				try
				{
					in.close();
					out.close();
					socket.close();
				}
				catch(Exception e)
				{
					jTextArea.append(e.toString()+"\n");
				}
				return;
			}
		})).start();
	}
	public void stop()
	{
	}
	public void destroy()
	{
		try
		{
			out.println("DC");
			in.close();
			out.close();
			socket.close();
		}
		catch(Exception e)
		{
			jTextArea.append(e.toString()+"\n");
		}
	}
}
```

und wenn du JETZT wirklich immer noch fragen zum net-code hast dreh ich dir den hals um ...

ich will von dir jetzt allerhöchstens noch KONKRETE fragen bezüglich der daten-verarbeitung hören ... auf alles andere hast du jetzt in form eines funktionierenden chats ALLE antworten die wir die bezüglich geben können OHNE dir gleich kompletten source zu posten womit lerneffekt = 0 wäre ...

und wie man n file öffnet ... und dies nun über die offene verbindung überträgt ... das solltest du schon mal selbst packen ... genau so wie man aus dem broadcast-server lediglich einen empfangs-server für die daten des clients machen ... bzw auf abfragen reagiert und entsprechend daten sendet ...

ich hab jetzt wirklich die schnauze voll um es mal so direkt zu sagen ...
so unglaublich lernresistent und faul habe ich hier lange niemanden mehr gesehen ...


----------



## JJK3 (1. Dez 2012)

> und wenn du JETZT wirklich immer noch fragen zum net-code hast dreh ich dir den hals um ...
> [/QOUTE]
> Ich sag doch die erste Morddrohung lässt nicht mehr lange auf sich warten! :lol:
> Außerdem träätte:
> ...


----------



## TKausL (1. Dez 2012)

JJK3 hat gesagt.:


> Wollte es auch in der fertigen .jar file testen können!!


Damit meinst du genau "WAS"?
Schonmal ne .jar auf nem Linux-Server oder in der Windows-Console ausgeführt? Nahezu "JEDER" Server (ob Java, C++, w/e) nutzt NUR die Console um Informationen/Fehler/Bla zu zeigen und eingaben zu empfangen... Wäre traurig wenn eine fertige .jar keine Ausgaben mehr tätigen könnte außer über eine eigene GUI...


----------



## JJK3 (1. Dez 2012)

Ich möchte das gar nicht auf nem server laufen haben!!
Am ende sollte mein PC der Server sein!!
Hab das mit dem JFrame deswegen gemacht!!
Ist's schlimm?


----------



## TKausL (1. Dez 2012)

JJK3 hat gesagt.:


> Ich möchte das gar nicht auf nem server laufen haben!!
> Am ende sollte mein PC der Server sein!!
> Hab das mit dem JFrame deswegen gemacht!!
> Ist's schlimm?



Es wird schlimm werden wenn du merkst dass deine Leitung für X User dann doch nichtmehr reicht und du das Programm auf nem Linux-Server laufen lassen willst. GUI's sind meiner Meinung nach für Serveranwendungen sinnfrei.


----------



## JJK3 (2. Dez 2012)

Wie jetzt?
Linux Server?
Ich hab Windows und mein PC soll der Server sein!!
Die GUI schmeiß ich am ende wieder raus!


----------



## JJK3 (2. Dez 2012)

Naja ich hab jetzt den fertigen Code aus meinem Java-Buchrtfm verstanden!!
Ist zwar schade das ich den einfach abtippen muss, statt ihn selber zu schreiben, aber was solls ;(
Ich poste den Code mal bei gelegenheit!


----------



## trääät (2. Dez 2012)

wollte grad sagen : den will ich gerne mal sehen ... auch wenns nur ausm buch abgetippt ist ... vielleicht findet man ja selbst da drin noch fehler und kann dir sowas sagen ...

das du nun zum "copy&paste" gezwungen bist zeigt ja irgendwie das du dein buch bis zu diesem punkt scheinbar noch nicht ganz verstanden hast ... denn ich kann es mir schwer vorstellen das in einem anfängerbuch solche "aufgaben" stehen womit der autor den anfänger etwas fordern will wenn auf den seiten davor nicht wenigstens ausführlich erklärt wurde was man zum "lösen" braucht und wie man es anwendet ...
ich würde dir also empfehlen an der stelle n lesezeichen reinzumachen und noch mal alles von vorne bis dahin wieder und wieder zu lesen bis du es wirklich begriffen hast ...
denn mehr können wir hier auch nicht machen ... wenn du es nicht begreifst können wir dir noch so viel an die back labern und dir noch so wunderschöne codes posten ... es hilft dir alles nichts wenn du es nicht selbst verstehst ... wesshalb halt von uns irgendwann das entnervte kam : frag google , lese und begreife ... denn wir haben auch keine lust dir wirklich alles immer und immer wieder zu erzählen wenn du daraus nicht lernst ...
dann könntest du auch gleich dein buch als lagerfeuer nutzen ... hätte ungefähr den selben lerneffekt ...


----------



## JJK3 (3. Dez 2012)

sag ich doch!!


----------

