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.