C#C
C#2y ago
Alex

How can I accept multiple clients?

I want to write my own http server using
TCP
and
System.Net.Sockets
. Here is my code:
using System.Net;
using System.Net.Sockets;
using System.Text;

const string ipAddress = "127.0.0.1";
const int port = 27015;

try
{

    // create socket
    Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp);

    // bind ip address

    IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse(ipAddress),port);

    listenSocket.Bind(ipEndPoint);

    // Listen
    listenSocket.Listen();

    Console.WriteLine($"listening on http://{ipAddress}:{port}");

    Socket acceptSocket = await listenSocket.AcceptAsync();



    byte[] buffer = new byte[1024];
    int bytesReceived = await acceptSocket.ReceiveAsync(buffer, SocketFlags.None);

    string message = Encoding.UTF8.GetString(buffer, 0, bytesReceived);

    Console.WriteLine(message);


    string response = "HTTP/1.1 200 OK\r\nContent - Type: text/html\r\n\r\n{ \"msg\"=\"Hello world!\"}";


    await acceptSocket.SendAsync(Encoding.UTF8.GetBytes(response, 0, response.Length));

    acceptSocket.Close();

    listenSocket.Close();
}
catch (Exception ex)
{
    Console.WriteLine($"[{ex.GetType()}]: {ex.Message}");
}


How can I accept multiple sockets? Should I create new
Thread
for each socket (I'll add while loop later)? Also, should I store threads somewhere to finish them after I handled request? Maybe you can give any other advices on this topic
Was this page helpful?