Поток не хочет стартовать (метод для прослушивания подключений к серверу) - C#
Формулировка задачи:
Разбираюсь в потоках и сокетах. Почему то поток не хочет стартовать метод для прослушивания подключений к серверу, посмотрите что не так.
using System; using System.IO; using System.Net; using System.Net.Sockets; using System.Threading; using System.Collections.Generic; public class TcpServer { private Socket MainSocket = null; private IPEndPoint Ip_point = null; private IPAddress IP = null; private Int32 port = 0; private List<Thread> Threads = null; private delegate void ThreadingDelegate(); private short Count; private int max_Count; struct client { public Socket ClientSocket; public IPEndPoint Ip; public client(IPEndPoint ip) { ClientSocket = null; Ip = ip; } } public TcpServer(string ip, int port, int Max) { IP = IPAddress.Parse(ip); this.port = port; Ip_point = new IPEndPoint(IP, this.port); MainSocket = new Socket(IP.AddressFamily, SocketType.Stream, ProtocolType.Tcp); MainSocket.Bind(Ip_point); MainSocket.Listen(Max); Count = 0; } //~TcpServer() //{ // foreach (Thread t in Threads) // { // t.Abort(); // Console.WriteLine("Поток {0} завершен", t.Name); // } // MainSocket.Dispose(); //} public void Start(int maxCon) { max_Count = maxCon; Threads = new List<Thread>(); for (int i = 0; i < max_Count; i++) { Thread ThreadToListen = new Thread(new ThreadStart(new ThreadingDelegate(StartListening))); ThreadToListen.IsBackground = true; ThreadToListen.Start(); Threads.Add(ThreadToListen); } } public void Dispose() { foreach (Thread t in Threads) { t.Abort(); } MainSocket.Dispose(); } private void StartListening() { while (true) { try { Console.WriteLine("Поток запущен..."); client client = new client(); if (Count < max_Count) { using (client.ClientSocket = MainSocket.Accept()) { Console.WriteLine("Пользоватеь подключился"); client.Ip = (IPEndPoint)client.ClientSocket.RemoteEndPoint; Count++; } } else Thread.Sleep(5000); } catch (SocketException e) { //обработка ошибки при подключении Console.WriteLine("Ошибка подключения: {0}", e); } } } } class MyTcpListener { public static void Main() { TcpServer Sr = new TcpServer("192.168.1.3", 12000, 1); Sr.Start(1); } }
Решение задачи: «Поток не хочет стартовать (метод для прослушивания подключений к серверу)»
textual
Листинг программы
Thread ThreadToListen = new Thread(delegate(){StartListening();});
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д