Поток не хочет стартовать (метод для прослушивания подключений к серверу) - 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();});

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы