Dateien schicken übers Internet
Übersicht

![]() |
maboxBetreff: Dateien schicken übers Internet |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, Ich habs jetzt endlich hinbekommen Dateien zu verschicken, jedoch nur über LAN. Ich nutze jetzt den Code von Jolinah.
Wenn ich versuche eine Datei übers Internet zu verschicken findet er zwar die Verbindung, aber es kommen 0 Bytes an. Die richtigen Ports am Router hab ich geöffnet. Mir wurde gesagt, dass man richtig programmieren muss, damit das mit den Ports funktioniert. Leider weis ich aber nicht wie das richtig ist. Deshalb frage ich jetzt euch, was ich hier falsch mache. Server Code: [AUSKLAPPEN] ;Server
Graphics 640, 480, 0, 2 SetBuffer BackBuffer() ;Client-Objekt definieren Type Client Field stream Field gesendet End Type ;Datei öffnen filename$ = "indigo.exe" file = ReadFile(filename) size = FileSize(filename) ;Server starten tcp = CreateTCPServer(21) buf_size = 65536 ;Buffer-Grösse 64kb buf = CreateBank(buf_size) Repeat Cls ;Client annehmen c = AcceptTCPStream(tcp) If c <> 0 Then ;Neues Client-Objekt erstellen client.Client = New Client ;Den stream speichern client\stream = c ;Dem Client mitteilen welche Datei er erhält WriteString(client\stream, filename) ;Und die Grösse der Datei WriteInt(client\stream, size) EndIf ;Alle Clients durchgehen For client.Client = Each Client ;In der Datei die richtige Position suchen SeekFile(file, client\gesendet) ;Von dieser Position aus, buf_size bytes lesen ;gelesen gibt an, wie viele bytes wirklich gelesen wurden gelesen = ReadBytes(buf, file, 0, buf_size) ;Wenn was gelesen werden konnte... If gelesen > 0 Then ;Dem Client die gelesenen bytes senden ;gesendet gibt an, wie viele bytes wirklich gesendet wurden gesendet = WriteBytes(buf, client\stream, 0, gelesen) ;Wenn was gesendet werden konnte If gesendet > 0 Then ;Beim Client-Objekt die Anzahl gesendeter Bytes um den ;richtigen Betrag erhöhen client\gesendet = client\gesendet + gesendet ;Wenn die Dateigrösse erreicht wurde... If client\gesendet = size Then ;Verbindung mit dem Client trennen CloseTCPStream(client\stream) ;Und Client-Objekt löschen Delete client EndIf Else ;Dem Client konnte nichts gesendet werden ;Verbindung trennen CloseTCPStream(client\stream) Delete client EndIf Else ;Von der Datei konnte nichts gelesen werden ;Verbindung trennen CloseTCPStream(client\stream) Delete client EndIf ;Nächster Client... Next Flip Until KeyHit(1) ;Bufferspeicher freigeben FreeBank(buf) ;Server beenden CloseTCPServer(tcp) ;Datei schliessen CloseFile(file) End Client Code: [AUSKLAPPEN] ;Client
Graphics 640, 480, 0, 2 SetBuffer BackBuffer() ;Verbindung mit dem Server herstellen tcp = OpenTCPStream("localhost", 21) If tcp = 0 Then Print "Verbindung konnte nicht hergestellt werden." WaitKey End EndIf ;Dateiname und Grösse lesen filename$ = ReadString(tcp) size = ReadInt(tcp) ;Dateistream (Dateien in Ordner download laden) file = WriteFile("download/" + filename) buf_size = 65536 ;Buffergrösse 64kb buf = CreateBank(buf_size) ;Anzahl gelesene Bytes total = 0 ;Zur Anzeige eines Ladebalkens balken_x = 20 balken_y = 20 balken_breite = 600 balken_hoehe = 20 prozent# = 0.0 ;Variable zum Beenden des Programms quit = False quit_message$ = "" Repeat Cls ;Wenn Daten gelesen werden können und die Datei noch nicht komplett ist If ReadAvail(tcp) > 0 And total < size Then ;buf_size Bytes vom Stream lesen ;gelesen gibt an, wie viele Bytes wirklich gelesen wurden gelesen = ReadBytes(buf, tcp, 0, buf_size) If gelesen > 0 Then ;Die gelesenen Bytes erhöhen total = total + gelesen ;Prozent ausrechnen prozent = Float(total) / Float(size) ;Die gelesenen Bytes in die Datei schreiben ;geschrieben gibt an, wie viele Bytes wirklich geschrieben wurden geschrieben = WriteBytes(buf, file, 0, gelesen) If geschrieben < 1 Then ;Es konnte nichts in die Datei geschrieben werden quit = True quit_message$ = "Fehler beim Schreiben in die Datei. Datei ist nicht komplett." EndIf Else ;Vom Server konnte nichts gelesen werden, Verbindungsunterbruch etc. quit = True quit_message$ = "Fehler beim Lesen vom Server. Datei ist nicht komplett." EndIf EndIf ;Wenn die Dateigrösse erreicht wurde... If total = size Then quit = True quit_message = "Die Datei wurde erfolgreich vom Server geladen." EndIf ;Rahmen zeichnen Color 255, 255, 255 Rect balken_x, balken_y, balken_breite, balken_hoehe, False ;Balken zeichnen Color 255, 0, 0 Rect balken_x + 1, balken_y + 1, prozent * (balken_breite - 2), balken_hoehe - 2 Flip Until quit = True ;Bufferspeicher freigeben FreeBank(buf) ;Verbindung schliessen CloseTCPStream(tcp) ;Datei schliessen CloseFile(file) ;Nachricht vor dem Beenden des Programms ausgeben If quit_message <> "" Then Color 255,255,255 Print quit_message WaitKey EndIf End |
||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich würde mal nen anderen port als 21 nehmen, der ist für ftp schon vergeben. dann muss auch im router portforwarding aktiviert sein, damit er alle pakete an deinen pc übergibt. | ||
![]() |
mabox |
![]() Antworten mit Zitat ![]() |
---|---|---|
muss port forwarding beim Server und Client aktiviert sein?
welchen Port würdest du nehmen? an meinem Router kann man nochwas einstellen, das heißt: "PPPoE Pass-Through". Das ist ausgeschalten, soll ich das mal einschalten? |
||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
bei dem port kann ich dir hohe werte wie 8364 empfehlen, die nimmt nämlich kaum einer und haben keine nachteile ^^
und soweit ich weiß ist dieses passtrough nur dazu, um mehrfach einwahlen zu erlauben, was bei den meisten anbietern verboten ist. |
||
![]() |
mabox |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habs jetzt mal mit Port 8364 versucht und (nur beim Server) den Port an Router geöffnet. Leider geht es immernoch nicht.
Kann mir noch jemand einen Tipp geben? |
||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
![]() |
mabox |
![]() Antworten mit Zitat ![]() |
---|---|---|
Tut mir leid wegen Doppelpost, aber ich bin echt fast am verzweifeln mit dem Programm. Über LAN geht alles, nur über Internet klappts einfach nicht.
Ich zeig euch jetzt mal 2 Bilder mit den Routereinstellungen, Ich versteh die nämlich nicht ganz, oder besser gesagt ich weis nicht ob das was ich eingestellt hab wirklich richtig ist. Hier sieht man die einstellungen..."Send files Fast" heißt meine erstellte Portregel Wenn man auf "Send files Fast" klickt kommt das hier: |
||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group