- Creating a socket (at both client and server)
  sockfd = socket(AF_INET, SOCK_STREAM, 0);
 
- Bind, listen at server
  struct sockaddr_in server_addr;
  //fill in server address
 ret = bind(sockfd, (struct sockaddr *) &server_addr, sizeof(server_addr));
 listen(sockfd, 10);
 
- Connect at client
ret = connect(sockfd, (struct sockaddr *) &server_addr, sizeof(server_addr) );
 
- Accept at server
  struct sockaddr_in server_addr, client_addr;
  client_addr_len = sizeof(client_addr);
  newsockfd = accept(sockfd, (struct sockaddr *) & client_addr, &client_addr_len);
  //client address is filled, newsockfd is new socket for this client
 
- Read and write at both client (from sockfd) and server (from newsockfd)
n = read(sockfd, inputbuf , 255);
n = write(sockfd,inputbuf,strlen(inputbuf));