Autor Beitrag
IhopeonlyReader
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: So 25.05.14 23:23 
Guten Tag,

Allgemein: Ich möchte Komponenten/ Hilfen haben, wie ich relativ "einfach" einen guten TCP-Server-Client-Konstrukt programmieren kann

Hintergrund: Bisher habe ich mit TServerSocket und TClientsocket gearbeitet, tolle Events und sehr Verständlich.
Leider ist dieser Server gerne mal überlastet. Connecten mehrere gleichzeitig hatt er sie in der Clientliste hat sie aber noch nicht ganz erstellt ?!
(Im onconnect event etwas an alle connecten aus den neu connecten senden gab fehler)
Zum anderen ist es nicht möglich eine Verbindung abzulehnen.. jede Verbindung wird standartmäßig angenommen, falls ich sie nicht haben will muss ich sie kicken.
dass hat zur folge, dass der server sehr stark ausgelastet ist.
Clientseitig gibt es bisher keine Probleme...

Mit welchen Komponenten würdet ihr größere Projekte umsetzen, denen auch "kleine" BruteForce attacken nichts machen?

Bin um eure Meinung intressiert, Quelltextanzätze (senden, empfangen, annehmen/abblehnen) wären erwünschenswert

mfG IhopeonlyReader

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Mi 28.05.14 20:47 
Sind Indy-Komponenten auch so schnell im Überlauf und haben Probleme mit der Verarbeitung der Clients, wenn es zu schnell geht?

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!


Zuletzt bearbeitet von IhopeonlyReader am Fr 30.05.14 09:32, insgesamt 1-mal bearbeitet
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Fr 30.05.14 09:32 
-push-

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 30.05.14 10:42 
Das einzige Problem bei den Indy Komponenten, das wir hatten, ist, dass sie blockierende Sockets verwenden. Wenn ein Request also eine Weile hängt, blockiert der Socket in der Zeit und man kann den entsprechenden Thread in der Zeit auch nicht beenden.

Die einzige große Alternative sind die ICS Komponenten, die auf asynchrone Sockets setzen.

Mit der Geschwindigkeit hatte ich bei beiden bisher keine Probleme, auch bei vielen verbundenen Clients. Man sollte aber in jedem Fall ein sauberes Threadingmodell haben...
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: So 01.06.14 15:38 
klingt vielleicht blöd, wie "einfach" sind sie denn?
blockieren sie wenn keine nachricht kommt und man "empfangen" möchte?
oder wie empfange ich pakete? bitte ein kleines codebeispiel

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Mo 02.06.14 23:59 
-push-

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
OlafSt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 486
Erhaltene Danke: 99

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: Di 03.06.14 13:29 
Hättest es mal selbst ausprobiert, wärst du schon längst fertig mit deinem Projekt.

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Di 03.06.14 15:22 
nein :D ich habe aktuell vielleicht 15 min pro Tag, die ich am Projekt investieren könnte.. deshalb will ich erst genau wissen mit welchen komponenten es gut umzusetzen ist...

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Di 03.06.14 16:58 
15 Minuten am Tag, um an einem Projekt zu arbeiten? Das wird nichts. Kannst Du nicht 10 Tage nichts dran machen und dann mal 3 Stunden dran arbeiten?
In 15 Minuten hast Du ja nicht mal Zeit, Dein Gehirn warumlaufen zu lassen.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)

Für diesen Beitrag haben gedankt: Narses
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Mi 04.06.14 13:39 
deshalb will ich erstmal die komponenten haben um nicht selbst groß suche danach starten zu müssen...

bald hab ich hoffe dann zeit

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 04.06.14 15:22 
Moin!

Um das nochmal auf den Punkt zu bringen (scheint nämlich untergegangen zu sein): :lupe: :shock:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Man sollte aber in jedem Fall ein sauberes Threadingmodell haben...

DAS ist der Punkt, auf den es ankommt. Es spielt praktisch keine Rolle, was für einen WSA-Wrapper (die Dinger bezeichnet der Wald-und-Wiesen-Delphianer als "Netzwerkkomponenten") du nimmst, du musst aber auf jeden Fall die Verarbeitung der Daten von der Kommunikation trennen! Wenn du bereits Performance-Probleme hast, dann wird dich ein anderer Wrapper nicht weiter bringen, weil du (sehr wahrscheinlich) die Daten nicht verarbeitet bekommst - das hat nix mit der Network-API zu tun... :idea: Wenn du API-Access und Verarbeitung im selben Thread hast, kriegst du immer Performance-Probleme, egal mit welchem Wrapper. ;)

Und noch der Vollständigkeit halber:
user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
Zum anderen ist es nicht möglich eine Verbindung abzulehnen.. jede Verbindung wird standartmäßig angenommen, falls ich sie nicht haben will muss ich sie kicken.

Das ist auch nicht Aufgabe eines WSA-Wrappers, sondern einer Firewall. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Mi 04.06.14 19:01 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Das ist auch nicht Aufgabe eines WSA-Wrappers, sondern einer Firewall. :idea:

Gibt es keine softwaretechnische lösung um eine verbindung abzulehnen?
in pyhton zum Beispiel erhalte ich verbindungsdaten und kann entsprechend annehmen bzw abblehnen (durch nicht annehmen)

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 06.06.14 11:35 
Moin!

user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
Gibt es keine softwaretechnische lösung um eine verbindung abzulehnen?
Sind Firewalls Hardware? :zwinker:

user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
in pyhton zum Beispiel erhalte ich verbindungsdaten und kann entsprechend annehmen bzw abblehnen (durch nicht annehmen)
Jung, das ist eine Konzeptfrage, die letztlich sicherheitsrelevant wird:
  • Es spielt keine Rolle, welches OS oder Socket-API, betrifft alle
  • Ein Server-Socket ("listening socket") ist dazu da, Verbindungen anzunehmen und zu bedienen (=Hauptaufgabe)
  • Es macht also (im häufigsten Fall) keinen Sinn, erst den Server-Socket entscheiden zu lassen, ob er die Verbindung will (klar, bei einem Login z.B. geht das erst hier, aber ein fehlgeschlagener Login ist auch normalerweise nicht der häufigste Fall)
  • Du willst zusätzlich einen Ban (=Verbot) aussprechen, also mit diesem Teilnehmer gar nicht mehr kommunizieren. Das OS und die Socket-API müssen also auch nicht "belastet" werden -> Kontaktaufnahme verweigern -> Firewall (weil: ressourcensparend)
  • Jede Lösung, die erst die Socket-API entscheiden (und ggfs. ablehnen) lässt, ist ein Risiko für DoS-Attacken (weil die auf Ressourcen-Auslastung abziehlt)
Du fragst nach einer "guten" (=effizienten, standard) Lösung, aber willst sie dann nicht... ? :nixweiss: Der Grund für deine Frage ist vermutlich eher, dass du nicht weißt, wie du das unter Windows mit der Firewall auf die Kette kriegst (das ist auch zugegeben da nicht trivial :? -> gibt ne Firewall-API), es löst aber nicht das eigentliche Problem, es dann aus Unwissenheit anders machen zu wollen. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.

Für diesen Beitrag haben gedankt: IhopeonlyReader
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Fr 06.06.14 18:09 
aso :D als ein externes programm schreiben, welches die "anfragen" überprüft?

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 07.06.14 00:10 
Dieses Programm gibt es schon, nennt sich Windows Firewall. Du musst dieser nur sagen was sie filtern soll, wie user profile iconNarses auch schon schrieb...
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Sa 07.06.14 12:10 
aber mit lazarus (ebenfalls object pascal) kann ich auch für linux kompilieren, dort gibt es keine windows firewall ?!

aber für den anfang werde ich mir eine windows firewall api mal anschauen

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: So 08.06.14 04:18 
user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
aber mit lazarus (ebenfalls object pascal) kann ich auch für linux kompilieren, dort gibt es keine windows firewall ?!
Ja, die haben was richtiges, nämlich iptables.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 08.06.14 11:44 
Dafür gibt es dafür leider keine API. Aber man kann dort eine Regel per Shell erstellen und dann die eingetragenen IPs ändern...
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: So 08.06.14 16:47 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Dafür gibt es dafür leider keine API. Aber man kann dort eine Regel per Shell erstellen und dann die eingetragenen IPs ändern...
Ich persönlich find jetzt "eine Zeile in eine Textdatei schreiben" signifikant einfacher als irgendwelche obskuren (und, so wie ich den "modernen" Teil der MSDN kenne, subtil falsch/haarspalterisch dokumentierten) APIs zu verwenden, aber das ist natürlich Geschmackssache.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Mo 09.06.14 14:53 
Gibt es eine allgemein gültige Lösung?
selbstgebaute iptables oder so?

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!