Socket.Accept
どうも、スレッドをブロッキングしているみたい。
using System; using System.Threading; using System.Net; using System.Net.Sockets; class C { public static void Service () { Socket listener = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint ep = new IPEndPoint (IPAddress.Any, 50000); listener.Bind (ep); listener.Listen (5); while (true) { Socket s = listener.Accept (); Thread.Sleep (500); s.Close (); } } public static void Main () { Thread t = new Thread (Service); t.IsBackground = true; t.Start (); Thread.Sleep (3000); Console.WriteLine ("Quit."); } } /* Quit. ...(終了しない) */
MS.NETだと終了します。