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.