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