Autor Beitrag
Kink
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Sa 13.07.02 21:02 
Ich möchte eine Datei vom Server zum Clienten schicken.
Es kann eine x-beliebige sein.
Ich versuche dies nun schon seit ein paar Tagen mit TServer- und TClientSocket aber das emfangen der Daten will nicht klappen. Das Senden funktioniert soweit ich das festellen konnte. Die Firewall meldet das etwas rausgeht.

Ich verstehe einfach nicht wie ich dem Clienten "klar mache" das die Datei, die vom Server kommt, für ihn ist und wie er sie wohin schreiben soll.

Kann mir das bitte jemand erklären wie das ganze von statten gehen könnte? So ungefähr zumindest :)

Diese wurde zwar schon einmal gefragt aber aber entweder missverstanden oder was weiss ich. Es wurde ein Link zu "Wie realisiere ich ein Internet-/Netzwerkchat?" gesetzt, worin nichts über das senden und empfangen von DATEI(EN) steht!
Savage
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 110



BeitragVerfasst: Sa 13.07.02 21:49 
Hi,

zuerst musst du den Client mit den Server connecten lassen. D.h der Client baut eine Verbindung zum Server auf.

Entsteht eine Verbindung, wird OnClientConnect beim Server und OnConnect beim Clienten ausgelöst.

Danach kannst du schon mal senden mit:

Server:
ausblenden Quelltext
1:
2:
3:
serversocket1.Socket.Connections[0].SendText('Irgend ein String');

// 0 = 1. Verbindung


Client:
ausblenden Quelltext
1:
clientsocket1.Socket.SendText('Irgend ein anderer String');					



Wenn der Server sendet, wird beim Clienten OnRead ausgelöst.
In dieser Procedure ClientSocket1Read wird dir ein TCustomWinSocket übergeben. Damit kannst du den Empfangenen String auslesen:

ausblenden Quelltext
1:
STring := socket.ReceiveText;					


Wenn der Client sendet, wird beim Server OnClientRead ausgelöst. Der String wird analog zum obigen ausgelesen.


Damit kannst du jetzt erstmal eine Art Chat aufbauen, der recht einfach funktioniert.

Wenn du nun eine Datei transferrieren willst, musst du die Datei partiel einlesen, zB. in 16 kb Stücken und diese als String oder Pchar auf der oben erwähnten Weise versenden und auf der anderen Seite wieder zusammenfügen.

Vieleicht kannst du dir auch eine kleine Syntax erstellen, wo drin stehen, was gerade gesendet wird, wie zB den Header einer HTML-Anfrage, den du dann vor dem eigentlichen Senden überträgst.

Vieleicht konnte ich dir helfen

mfg
Savage

Code-Tag eingefügt. Marc
Kink Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 14.07.02 11:00 
Das Problem ist nur das keinen Text sondern ne Datei senden will die der Client empfängt.
Savage
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 110



BeitragVerfasst: So 14.07.02 11:47 
@Marc thx für Code-Tag

@ Kink

Das war mir schon klar, bloß wenn du eine Datei über einen Stream oder allgemein im kompletten schickst, war bei mir das Problem, dass bei Files ab einer Größe von 10 MB der Datenfluss zum stillstand gekommen war (bzw. gegen Null lief).

Deshalb ist es Sinnvoll die File in einzelnen Stücken zu zerlegen und diese zB als Text zuversenden oder PChar(dort ist es unwichtig, ob in diesem String oder PChar Steuerzeichen mit drin sind). Auf der gleichen Art und Weise werden zB auch Files übers HTTP versendet.

Du musst also nur versuchen die File ersteinmal in kleine Stücken einzulesen. Vieleicht unter verwendung von einen TFilestream oder so. Oder mit BlockRead (oder so ähnlich). Dort als Pointer z.B. den Typ PChar verwenden.

Aber es gibt sehr viele Möglichkeiten eine File partiel einzulesen.

viel Glück
mfg
Savage
airline
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 16.08.02 21:23 
Titel: Hi!
Hi, ich arbeite gerade an einem kleinen Chat Programm für mich und meinen Kumpel, also nur für 2 Personen!
Arbeite auch mit Server und Client!
wenn jemand will kann ich ihm die fertigen Dateien oder auch die Quelldateien per Mail senden! einfach mal melden!
bin ja selbst auch erst anfänger, aber bisher funktioniert das Programm ohne Probleme...
Skynthos
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Mo 19.08.02 16:11 
Ich hatte das Problem mit dem Versenden von Dateien über das Netzwerk auch schon öfter und habe es immer aufgegeben :(

Skynthos