Hallo Community!
Ich schreib gerade an einer kleinen Server-App und beim Testen fiel mir auf, dass Sockets scheinbar - warum auch immer - trotz Close noch eine Weile geöffnet bleiben. Das allerdings auch nur, wenn der Server die Verbindung schließt.
Zum Testen verwende ich den einfachen Telnet-Client, den mir Windows bietet. Der Server-Part funktioniert soweit eigentlich, die Verbindung wird auch geschlossen (Telnet schmeißt mich mit dem typischen "Verbindung zu Host verloren." raus) - wie gesagt bloß das Problem, dass der Client-Socket auf Server-Seite scheinbar geöffnet bleibt. Ein "netstat -a" ergibt mir zumindest, dass mein Server noch einen Socket zum Client offen hat (Status: wartend), der Client seinen korrekterweise aber bereits geschlossen hat.
Folgender Code demonstriert das Problem:
		                     
             C#-Quelltext
                        C#-Quelltext                    
           	 										| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 
 | class Program{
 static void Main(string[] args)
 {
 TcpListener listener = new TcpListener(IPAddress.Any, 1000)
 listener.Start();
 
 Socket client = listener.AcceptSocket();
 client.Send(Encoding.UTF8.GetBytes("Hello World!"));
 client.Shutdown(SocketShutdown.Both);
 client.Disconnect(false);
 client.Close();
 }
 }
 | 
		
	  
Nach einem "telnet localhost 1000", der gesendeten Nachricht und Rausschmiss durch den Server sollte ein "netstat -a" zeigen, dass der Client-Socket im Server noch auf "Wartend" hängt.
Hat eventuell jemand eine Idee, woran das liegen könnte?
Viele Grüße!
Mao (der wegen angeblich bereits existentem Usernamen ein Palindrom verwenden musste)
(Crosspost: 
mycsharp.de)