Re: Problem mit Socket-Verbindung
- From: Peter Brightman <peter@xxxxxxxxxxxx>
- Date: Fri, 08 Aug 2008 16:56:41 +0200
Thomas Hasler schrieb:
Hallo Peter,
ich habe mir auch das Projekt heruntergeladen, kompiliert und (nur)
den Server gestartet. Das Projekt war die Version .NET 3.5 vom
06.08.2008. Frank bietet ja das Projekt für mehrere .NET Versionen an.
Ok. Tausend Dank für Deinen Test und Deine Bemühungen.
Bei mir wird das Serverfenster geöffnet, ich kann kurz lesen: ""Der
Server ist gestartet auf Port : ..... " etc. Dann wird der Inhalt des
Fensters weiss und das GUI reagiert nicht mehr.
Ja, weil das die letzte Ausgabe mit der Methode Melde() ist, bevor Accept() aufgerufen wird.
Klar wenn ich dann (irgendwann später) den Client starte, verhält sich
das Programm wie gewünscht.
Klar. Das ist ja der Grund warum Accept() blockieren MUSS, nämlich so lange ein Client eben NICHT connected. Und wann ein Client sich verbindet, weiß ein Server im allgemeinen nicht. Wenn sich ein Client verbunden hat dann liefert Accept() den neuen Socket für diesen Client zurück. Deswegen kann Accept() nicht zurückkehren und MUSS blockieren so lange sich kein Client verbunden hat. Hatte ich aber alles schon beschrieben übrigens.
Zeile 45 im Server.cs muss blockieren.
Richtig. Hatte ich auch genau so beschrieben und erklärt doch Frank antwortete dann recht sauer mit Zitat vom 1.8.2008 13:56:
>>nein, schau Dir einfach mein Beispiel an, dann siehst
>>Du, dass die da nichts blockiert Peter. Man, ist aber
>>auch schwer mit Dir.
Zu der GUI, die zwangsweise einfrieren MUSS wenn innerhalb LoadForm eine blockierende Funktion aufgerufen wird meinte Frank, Zitat:
>>Quark, die friert nicht ein.
Dann kam übrigens auch schon das EOT von Frank.
Es ist eigentlich vollkommen egal welche blockierende Funktion man in LoadForm aufruft, man hält dadurch das Laden der Form auf was zu diesen Resultaten führen muss. Ich habe mir noch den Spaß gemacht und ein Menü in die Form eingebaut, das ließ sich nicht bedienen, mit der Sanduhr an der Maus erst recht nicht.
Dass steht auch in der MSDN
unter: http://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.aspx
Zitat:
The TcpListener class provides simple methods that listen for and
accept incoming connection requests in BLOCKING SYNCHRONOUS MODE. You
can use either a TcpClient or a Socket to connect with a TcpListener.
Create a TcpListener using an IPEndPoint, a Local IP address and port
number, or just a port number. Specify Any for the local IP address
and 0 for the local port number if you want the underlying service
provider to assign those values for you. If you choose to do this, you
can use the LocalEndpoint property to identify the assigned
information, after the socket has connected.
Use the Start method to begin listening for incoming connection
requests. Start will queue incoming connections until you either call
the Stop method or it has queued MaxConnections. Use either
AcceptSocket or AcceptTcpClient to pull a connection from the incoming
connection request queue.THESE TWO METHODS WILL BLOCK. If you want to
avoid blocking, you can use the Pending method first to determine if
connection requests are available in the queue.
Ich sehe da keinen Interpretationsspielraum.
Ich habe es halt mit meinen Worten und auf deutsch beschrieben. Und auch wenn es vielleicht nicht so elegant geklungen hat, so stimmt es dennoch. Natürlich kann man jetzt sagen "...um blockieren zu verhindern müsste man..." oder "...in echt müsste das natürlich als service ..." etc. Doch ich habe halt vom IST Programm gesprochen und nicht von etwas dass es nicht gibt, hatte stets hingewiesen welche Sample-App. ich meinte.
Gruss
Thomas
Vielen Dank für Deine Mühe Thomas und Deine Resultate bei Deinen Tests.
Gruß,
Peter
.
- Follow-Ups:
- Re: Problem mit Socket-Verbindung
- From: Frank Dzaebel
- Re: Problem mit Socket-Verbindung
- References:
- Re: Problem mit Socket-Verbindung
- From: Peter Brightman
- Re: Problem mit Socket-Verbindung
- From: Frank Dzaebel
- Re: Problem mit Socket-Verbindung
- From: Peter Brightman
- Re: Problem mit Socket-Verbindung
- From: Frank Dzaebel
- Re: Problem mit Socket-Verbindung
- From: Peter Brightman
- Re: Problem mit Socket-Verbindung
- From: Thomas Hasler
- Re: Problem mit Socket-Verbindung
- Prev by Date: Re: Problem mit Socket-Verbindung
- Next by Date: Re: Problem mit Socket-Verbindung
- Previous by thread: Re: Problem mit Socket-Verbindung
- Next by thread: Re: Problem mit Socket-Verbindung
- Index(es):
Relevant Pages
|