0

i have a list of data and i want send it to clients.
This is the way i choosed:

private static void StartServer()
{
    _server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    _server.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 10010));
    _server.Listen(1);
    Console.WriteLine("Waiting for client connects");

    while (true)
    {
        Socket client = _server.Accept();
        _clients.Add(client);
        Thread rd = new Thread(ReceiveData);
        rd.Start(client);
    }
}

private static void ReceiveData(object skt)
{
    Socket socket = (Socket)skt;
    try
    {
        while (true)
        {
            byte[] buffer = new byte[128];
            int rec = socket.Receive(buffer);
            if (rec > 0)
            {
                List<string> names = new List<string>() { "mahdi", "Mahan", "ali"};
                buffer = Encoding.Unicode.GetBytes(names.Count.ToString());
                socket.Send(buffer);
                Thread.Sleep(10);
                for (int i = 0; i < names.Count; i++)
                {
                    buffer = Encoding.Unicode.GetBytes(names[i]);
                    socket.Send(buffer);
                    Thread.Sleep(10);
                }
                List<string> familys = new List<string>() { "100", "kiani", "rezaee", "200" };
                buffer = Encoding.Unicode.GetBytes(familys.Count.ToString());
                socket.Send(buffer);
                Thread.Sleep(10);
                for (int i = 0; i < familys.Count; i++)
                {
                     buffer = Encoding.Unicode.GetBytes(familys[i]);
                     socket.Send(buffer);
                     Thread.Sleep(10);
                }
            }
        }
    } catch {}

If I did not put the Thread.Sleep(1), there would be an error!
I think I did not choose the right way, so if anyone knows a better way, thank you for guiding me.

Mahdi
  • 23
  • 9

0 Answers0