Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Wie kann man .txt Files übers Internet verschicken?
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!!
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
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 ...
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" ...
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!!!
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
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).
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]
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 ;-)
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!?)
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 ;-)
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
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.
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" ...
OMG sag es mir doch einfach und das Problem wär beendet!
[EDIT]Hab übrigens mal was ganz simples ausprobiert:
CLIENT:
Code:
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
Code:
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]
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?
Java:
while (0==0) {
Edit:
Dein server sendet:
Java:
pW.print("hhhfdshf");
Dein CLient empfängt:
Java:
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!!!)
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 ...
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.
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 ...
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:
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
Code:
ifconfig
,
Code:
netstat
,
Code:
ping
,
Code:
host
,
Code:
tcpdump
/
Code:
wireshark
,
Code:
netcat
,
Code:
nmap
/
Code:
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.
@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 ...
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.
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
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 ...
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!!!
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.
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.
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!!
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 ...
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 ...
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:
Dein fertiger code ist net und so, aber fertigen code härte ich auch noch selat im I-net gefunden!
Aber dann blick ichs nicht so gut!! wenn ichs selbst mache versteh ichs am ende wenigstens!!
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...
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?
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.