Entwickler-Ecke

Netzwerk - Socket-server aus WinForm starten und beenden


benstar - Mo 27.07.09 11:34
Titel: Socket-server aus WinForm starten und beenden
Hallo,

ich suche ein Beispielprogramm, bei dem durch ein windowssteuerelement(z.B.Button) ein Socket server erstellt wird. Irgendwie funktioniert das mit den Consolenserversion nicht, wenn ich versuche die für WinForm umzubauen.

Ich habe eigentlich keine große Ahnung von Socket bzw. Servern. Ich brauche nur für meine Applikation so einen Socket server den ich per laufzeit erzeugen und wieder löschen kann. an dem sollen sich clients anschließen können und die dann ab und zu eine Nachricht geschickt bekommen.

Vielleicht weiss ja jemand wo ich sowas finden kann.

Gruss Ben

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


PerryRhodan - Mo 27.07.09 12:55

Hallo,

vielleicht wäre es sinnvoll, wenn Du genau beschreibst wo Dein Problem liegt. "Irgendwie funktioniert das nicht" ist zu vage.

Ich vermute, dass Dein Problem beim erforderlichen Multithreading liegt um den Listenerthread zu starten und entsprechend die notwendigen Invokes zur Aktualisierung des Frontends.

Grüße
PerryRhodan


benstar - Mo 27.07.09 13:26

Ja, kann gut sein, dass es mit dem threading zusammen hängt.
Ich habe mal probiert einen Consolen Socket Server etwas umzuändern und dann von dieser Klasse eine Instanz zu bilden. Das Problem ist, dass das Objekt nicht auf Clients wartet sondern sofort wieder gelöscht wird.

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


danielf - Mo 27.07.09 13:52

Bei mir gibt es keine Klasse ConsolenSocketServer. Kannst du dich ein bisschen genauer ausdrücken?

Für Sockets solltest du dich im Namespace System.Net.Sockets umschauen. Da gibts dann die Klasse TcpListener mit dem du auf eingehende Verbindungen warten kannst.

Konkrete Probleme dazu kann dir bestimmmt jemand helfen. Aber was du bis jetzt sagst macht wenig Sinn.

Gruß Daniel


benstar - Mo 27.07.09 14:10

Ok, hier ist die Klasse. Die will ich sozusagen per button instanzieren.
In der Klasse ist halt die ganze Socket, Server, Datenübertragung geschrieben.


JasonDelife - Mo 27.07.09 17:30

Ich sehe kein Problem (Ok, die GC-Aufrufe am Ende müssten nicht sein), also rate ich mal:
Wenn du AppMain in button1_Click() definierst, dann wird sie nach Ende
der Methode auch wieder aufgelöst. Du musst die Variable in der Form-Klasse definieren.
(Bitte nicht schlagen, wenn du das schon längst hast)

Grüße, JasonDelife.