Autor Beitrag
XorRot
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 16.11.05 00:04 
hi,

ich wollte mal nachfragen und eine allgemeinen diskussion einleiten über eigene/slebstgemachte Netzwerkprotokolle..
über verschiedene methoden und über deren vor und nachteile..
dabei kann es sich um alles mögliche handeln z.b. Dateitransfer, Audio/Video/Text übertragung usw

ich hab zwar in einigen threads im forum etwas drüber gelesen aber insgesammt fand ich es zu speziell oder unbefriedigend als antwort..

also was ich an lösungsansätzen hab ist:
- versenden von strings z.b kommagetrennte parameter
- versenden von binären daten über records
=> gegebenfalls mit mehreren kanälen (z.b. ports nur um binär ne datei zu übertragen..)

ich hab über die vor und nachteile der beiden methoden nachgedacht und meine das versenden mit strings könnte man wirklich wie ein richtiges kleines protokoll machen das z.b. aussehen könnte wie bei einer xml datei oder wie eine ini-datei vorteil wäre man hätte eine gute struktur die leicht abänderbar wäre.. da bei dieser methode viel in strings rumkopiert werden müsste frag ich mich wie es mit der geschwindigkeit aussieht (ich gehe jetzt von vollbelastung aus z.b. übertragung von dateien/import/export)

records sind aus meiner sicht einfach zu realisieren und auch der zugriff auf records ist programmiertechnisch sehr einfach und angenehm.. allerdings können records auch grosse probleme machen wenn man z.b. unterschiedliche programmversionen benutzt - auch die fehleranfälligkeit/sicherheit bei falsch versendeten paketen (z.B. irgendjemand verschickt müllpakete ins netzewerk wie z.b. unsinnige strings um absichtlich zu stören) ist problematisch - vielleicht auch nur weil ich nicht wusste wie man erkennen kann ob nun ein record verschickt wurde oder nur ein mülltext..

vor allem würd ich gern wissen wie es bei anderen programmen läuft ftp z.b. kenne ich aber wie stehts z.b. bei emule oder bittorrent oder chatprogrammen aus?

ok ich sehe es sind viele fragen aber ich hoffe ihr nimmt mir das net übel :D
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 16.11.05 00:43 
user profile iconXorRot hat folgendes geschrieben:
vor allem würd ich gern wissen wie es bei anderen programmen läuft ftp z.b. kenne ich aber wie stehts z.b. bei emule oder bittorrent oder chatprogrammen aus?

install dir mal Suche bei Google ETHEREAL

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
XorRot Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 16.11.05 01:08 
thx schönes programm ich werd mich damit beschäftigen :)
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 16.11.05 01:59 
Moin und :welcome: im Forum!

Allgemeingültiger Rat an dieser Stelle: halte dich an standardisierte Protokoll (RFC-Protokolle), wenn du irgendwie kannst; wenn es gar nicht anders geht, mache eine eigenes Protokoll, auf String-Basis, niemals auf Record-Basis!

Sehr viel mehr gibt´s da IMHO schon nicht mehr zu diskutieren; Protkolle sind ja nun nicht gerade erst Gestern erfunden worden... :arrow: deshalb ja, halte dich möglichst an schon existierende, schlaue Ideen. :wink:

cu
Narses
XorRot Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 17.11.05 23:11 
moin und thx für die antworten :)


ich hab mich entschieden ich bastel nur noch protokolle auf string basis (wegen kompatibilität) und wenns geht greif ich auf schon existierende zu.. ;)

das einzige was ich nun gerne wissen würde wäre wie schnell das ganze dann ist..

wenn ich nun strings versende die ein bestimmtes format haben z.b. ID PARAM1 PARAM2 INHALT
dann müsste ich z.b. binäre daten vorher in base 64 oä codieren damit die daten auch wirklich rüber kommen, dies wäre bei einem down/uploadprogramm doch wirklich von nachteil, weil das ganze die geschwindigkeit beschränkt, dazu kommt noch das auseinandergefriemel des strings.. hat jemand schon mal soetwas versucht und kann deswegen einige geschwindigkeitsbeispiele geben? noch shclimmer wirds wenn pakete mit checksummen verbinden will..
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 17.11.05 23:22 
Moin!

user profile iconXorRot hat folgendes geschrieben:
ich hab mich entschieden ich bastel nur noch protokolle auf string basis (wegen kompatibilität) und wenns geht greif ich auf schon existierende zu

Fein, gute Entscheidung. :wink:

user profile iconXorRot hat folgendes geschrieben:
wenn ich nun strings versende die ein bestimmtes format haben z.b. ID PARAM1 PARAM2 INHALT
dann müsste ich z.b. binäre daten vorher in base 64 oä codieren damit die daten auch wirklich rüber kommen,
[...]
noch shclimmer wirds wenn pakete mit checksummen verbinden will..

Langsam, niemand hat gesagt, dass Strings nur aus den Zeichen #32..#127 bestehen müssen. :D Es spricht durchaus nichts dagegen, binäre Blöcke ins Protokoll zu integrieren; aber eben "integriert", nicht ausschließlich daraus bestehend. :wink:

Und dann ist da immer noch die FTP-Idee, für den Datentransport und den Control-Flow getrennte Channels zu verwenden.

cu
Narses
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Fr 18.11.05 09:59 
Also Streams direkt geht doch auch noch, oder? So in Richtung Broadcasts für Videostreaming?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 18.11.05 12:07 
Moin!

user profile icondigi_c hat folgendes geschrieben:
Also Streams direkt geht doch auch noch, oder? So in Richtung Broadcasts für Videostreaming?

Es geht alles, was du beherrscht und was Sinn macht. :wink:

Die Frage ist, ob es Sinn macht, das Rad (hier also: das Protokoll) immer wieder neu zu erfinden... :| und wenn man denn schon ein proprietäres Protokoll entwickelt, dann sollte man sich selbst besser keine Fallstricke auslegen, indem man auf Records aufsetzt oder andere Ansätze wählt, die unflexibel sind und Kompatibilitätsprobleme bereits implizieren.

Ob du nun mit Streams arbeitest oder nicht (sind ja auch nix anderes als binäre Blöcke), das hängt ausschließlich davon ab, ob du es willst und ob es an der Stelle Sinn macht - das kann man nicht pauschal beantworten.

cu
Narses
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Fr 18.11.05 12:14 
Ich wollte bloß wissen ob es geht, weil lesen tut man den Socket ja eh immer als Stream(zumindest per Indy).

Ne ich bin auch lieber für Standarts, die haben sich ja bewährt :D