Re: Problem mit Socket-Verbindung

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



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













.



Relevant Pages

  • Re: Problem mit Socket-Verbindung
    ... Server ist gestartet auf Port: ... accept incoming connection requests in BLOCKING SYNCHRONOUS MODE. ... can use either a TcpClient or a Socket to connect with a TcpListener. ... and 0 for the local port number if you want the underlying service ...
    (microsoft.public.de.german.entwickler.dotnet.csharp)
  • Re: Seite linux.de
    ... % Terms and Conditions of Use ... % The data in this record is provided by DENIC for informational purposes only. ... % By maintaining the connection you assure that you have a legitimate interest ... Nserver: ns1.globalways.de ...
    (de.comp.os.unix.linux.misc)
  • Re: Wie kann ich unter SBS 2003, den FSMO-Besitz uebernehmen?
    ... Using Ntdsutil.exe to seize or transfer FSMO roles to a domain controller ... You can use the first method if both computers are running. ... that is outlined in the following Microsoft Knowledge Base article: ...
    (microsoft.public.de.german.backoffice.smallbiz)
  • Re: How can i set the simulation time with command as external?
    ... you force Simulink to ignore the the times specified in timespan. ... Use the 'specified' option instead. ... Can you give me a tipp, how should i do? ...
    (comp.soft-sys.matlab)
  • Port 22 via iptables =?iso-8859-1?Q?f=FCr?= ganzes Netz remappen
    ... Aber nur für den Port. ... If you specify more ... Prev by Date: ... Next by Date: ...
    (de.comp.security.firewall)