[HTTP] Socket Programming, Blocking vs Non-Blocking server

forhjy
Sep 27, 2020

--

Blocking Mode

Handling one client at a time.

Client Socket

  • 1) Create socket.
  • 2) Ask if can connect to server.
  • 3) Send request to server and receive requested data from server.
  • 4) Close socket when everything’s done.

Server Socket

  • 1) Create socket.
  • 2) Bind its’ IP address and port number to created socket.
  • 3) Listen to client’s connection request.
  • 4) Accept connection request from client, and create socket for communication.
  • 5) Receive client’s request and send response.
  • 6) If sending and receiving data are done, close socket.

Non-Blocking Mode

Handling multi-clients.

Select

  • Basically, Select monitors multiple file descriptors. If any file descriptors sends data, select is activated.
  • For example, if there is some data to be read on one of the sockets select will provide that information.

fd_set

  • FD_ZERO(&readfds/&writefds) : Clearing fd set
  • FD_SET(server_socket, &readfds/&writefds) : Adding descriptor to fd set
  • FD_CLR(server_socket, &readfds/&writefds) : Removing descriptor from fd set
  • FD_ISSET(server_socket, &readfds/&writefds) : If change detected on server socket, it returns != 0. And the change means request of connection from client.

--

--

forhjy
forhjy

Written by forhjy

Software Engineer Based in Seoul

No responses yet