Entwickler-Ecke

Internet / Netzwerk - Beste Netzwerkkomponente für mich?


Sithlord - Do 04.06.09 22:13
Titel: Beste Netzwerkkomponente für mich?
Hallo,

ich habe angefangen, ein "Hack-Spiel" zu programmieren, nur für uns in der Schule. Jeder hat eine Kommandozeile und gibt Befehle ein. Nun benutze ich aber die Standard ServerClient und ServerSocket Teile. Da stellte sich heraus, wenn man zu dritt versucht sich gegenseitig zu "hacken", dass der Server schlappmachte und teilweise keine Antwort zurücksendete. Erst wenn der entsprechende Server neugestartet wurde, geht wieder alles -auf unbestimmte Zeit.

Gibt es eine Komponente, die mir folgendes ohne Probleme ermöglicht:
-Anzeigen der IP desjenigen, der etwas gesendet hat
-Senden/Empfangen eines Strings
-Senden eines Strings an eine bestimmte IP (Egal ob Client/Server, wie auch immer).
-Muss Multiusing fähig sein= 2 oder mehr User bedienen können, da wir bestimmt fast 20 Leute sein werden...
-Trotzdem damit zurechtkommen, das mindestens alle 2 Sekunden eine Antwort gesendet werden muss
-Einfach zu bedienen wie komponente.sendtext('text',anfrage_vom_bestimmten_clienten);

Mfg Kalle

Vielen Dank für Hilfe.
Ich wüsste jetzt nicht, welche es gibt...

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.


jaenicke - Do 04.06.09 22:19

Da es um ein lokales Netzwerk geht, hilft dir vielleicht dieser Beitrag:
http://www.delphi-library.de/viewtopic.php?p=336933
(und auch die ganze Tutorialreihe)


Sithlord - Do 04.06.09 22:26

HuHu und danke ;)

Diese Komponente ist mir auch schon ins auge gesprungen, aber auch nicht ganz dass, was ich suche.
Zumal ich auf UPD verzichten wollte, sofern möglich ;)

Mfg Kalle


jaenicke - Do 04.06.09 22:27

user profile iconSithlord hat folgendes geschrieben Zum zitierten Posting springen:
Zumal ich auf UPD verzichten wollte, sofern möglich ;)
Was gibt es denn im lokalen Netzwerk für Gründe für dich auf TCP zu setzen? ;-)


Narses - Do 04.06.09 23:51

Moin!

user profile iconSithlord hat folgendes geschrieben Zum zitierten Posting springen:
ich habe angefangen, ein "Hack-Spiel" zu programmieren, nur für uns in der Schule. Jeder hat eine Kommandozeile und gibt Befehle ein.
[...]
wenn man zu dritt versucht sich gegenseitig zu "hacken"
Wie "hackt" man sich denn gegenseitig (und das auch noch Client-Server)? :gruebel: Sachen gibt´s... :shock:

user profile iconSithlord hat folgendes geschrieben Zum zitierten Posting springen:
Gibt es eine Komponente, die mir folgendes ohne Probleme ermöglicht: [...]
Deine Anforderungen überfordern die Socket-Komponenten jedenfalls nicht. :nixweiss: Ich fürchte eher, du verwendest sie nicht richtig (ereignisorientiert)... :?

Aber, ehrlich gesagt, ich kann mir auch beim besten Willen nicht vorstellen, was du da tust... :lol:

cu
Narses


jaenicke - Do 04.06.09 23:54

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Wie "hackt" man sich denn gegenseitig (und das auch noch Client-Server)?
Na, man gibt die Befehle ein:

Quelltext
1:
2:
3:
4:
> spitzhacke Client1
Antwort vom Server:
Client1 gehackt mit Spitzhacke, Firewall leicht beschädigt, aber nur 2 Ziegelsteine defekt
...

SCNR :P :mrgreen:


Narses - Do 04.06.09 23:56

:rofl:

//EDIT:

Wobei... ;)
user profile iconSithlord hat folgendes geschrieben Zum zitierten Posting springen:
Da stellte sich heraus, wenn man zu dritt versucht sich gegenseitig zu "hacken", dass der Server schlappmachte und teilweise keine Antwort zurücksendete. Erst wenn der entsprechende Server neugestartet wurde, geht wieder alles
Ist das nicht ein erfolgreich "gehackter" Server? :zwinker: Game over... war doch das Ziel, oder? :nut:


Sithlord - Fr 05.06.09 05:47

LoL,

ne ganz so ist es nicht...^^
Ihr habt euren Spaß ja nun gehabt, aber ich würde gerne Hilfe haben ;)

Ich kanns ja mal kurz erklären:

Ich gebe einen Befehl ein, z.b. send.bf
Bf steht für BruteForce, was ich in diesem Spiel einfach umgesetzt habe für eine Zufallszahl von 1-30.
Nun sende ich mit meinem Clientsocket an den Serversocket "BF:Zahl", wofür Zahl halt für den Zufallswert steht.
Sollten beide Zufallswerte übereinstimmen, sendet der Server mir "BFe" zurück, sollte es falsch gewesen sein, sendet er "BFn" zurück.

Wisst ihr, wie ich genau an denjenigen vom Server aus, zurückschreiben lassen kann, ders gesendet hat?
Vielleicht liegt darin ja mein Fehler, dass die Komponenten leicht versagen...

Weil sich wie gesagt, wenn sich mehrere Verbinden, der Server weigert, den BruteForce Wert anzunehmen und zurückzusenden.
Dass er dass nicht annimmt, sieht man daran, dass er beim Gegner nicht "Fehlgeschlagener BF Versuch" hinschreibt, was er sonst tut.

Ich habe halt nicht so viel Ahnung in Delphi -.- ^^.
Deshalb frage ich ja ;)


Narses - Fr 05.06.09 08:01

Moin!

user profile iconSithlord hat folgendes geschrieben Zum zitierten Posting springen:
Ihr habt euren Spaß ja nun gehabt, aber ich würde gerne Hilfe haben ;)
Schon klar, war auch nicht persönlich gemeint. ;)

user profile iconSithlord hat folgendes geschrieben Zum zitierten Posting springen:
Wisst ihr, wie ich genau an denjenigen vom Server aus, zurückschreiben lassen kann, ders gesendet hat?
Vielleicht liegt darin ja mein Fehler, dass die Komponenten leicht versagen...
Die Komponenten versagen vermutlich nicht, eher dein Konzept. :? Für mich hört sich das so an, als ob du das hier mal lesen [http://www.delphi-library.de/topic_TerminatorzeichenProtokollTutorial+Teil1+Sockets+v400_54269.html] solltest (Code zeigste ja nicht, leiten wir also die erste Raterunde ein). :idea:

cu
Narses


>M@steR< - Fr 05.06.09 11:17

Gelöscht


Sithlord - Fr 05.06.09 20:45

Doch, jeder hat(te) sowohl seinen eigenen Clienten und Server... Weil jeder ja jeden "Hacken" kann.

Nun verwende ich die UDP Komponente und bin sehr zufrieden damit, habe doch ein für mich unlösbares Problem:

Ich kann beim UDP als Server keine Antwort an den Clienten senden, der zuvor nen Befehl gesendet hat.

Sprich:

Ich gebe als PC1 ein:
remote.restart
kommt bei PC2 an:

remrestart
interpretiert dieser als:
server shutdown, edit.text disabled - 30 Sekunden lang.
Er soll bevor er offline geht, aber ne Nachricht zurück an den Clienten senden, an den, dem das Paket gehörte...
Also:
PC2 an PC1:
remrestartyes
PC1 interpretiert und gibt mir als Info wieder:
RemotePC startet neu...

Bloß ich kann den Server nichts senden lassen. Sollte diese sich gerade verbunden haben, kann auch der client wenig tun, da er gerade mit was anderem verbunden ist...

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.


Narses - Fr 05.06.09 20:53

Moin!

Ich mache mal ein Beispiel, in welcher Art deine Frage hier ankommt: ;)

Ein Mann ruft beim Arzt an und sagt: "Herr Doktor, immer wenn ich was gegessen habe, tut mir der Bauch so weh! Was kann ich denn essen, damit das nicht mehr weh tut?" - Woher in Gottes Namen soll der arme Medizinmann am Telefon das wissen?! :roll:

ZEIG. MAL. DEN. CODE. :nixweiss:

cu
Narses