title: TCP/IP server using c
body: <p>I want to make a server-client programm.The first thing i can't find is to make the server never shut down and accept each client.I put a while(1) on my server to run but after 3 connections to one client my server stops accepting other connections and i delete this while.I cant find how to build this think.Also i want to create TCP/IP socket so am i making the socket with the right way?</p>
  
  <p>Im working on ubuntu at Visual Studio Code.</p>
  
  <p>Server:</p>
  
  <pre><code>#include &lt;stdlib.h&gt;
  #include &lt;stdio.h&gt;
  #include &lt;unistd.h&gt;
  #include &lt;string.h&gt;
  #include &lt;errno.h&gt;
  #include &lt;sys/stat.h&gt;  
  #include &lt;fcntl.h&gt;
  #include &lt;sys/wait.h&gt;
  #include &lt;sys/socket.h&gt; 
  #include &lt;sys/types.h&gt;
  #include &lt;netinet/in.h&gt; 
  #define PORT 8080
  int main(int argc,char* argv[]){
  
  int server_fd, new_socket, valread; 
  struct sockaddr_in address; 
  int opt = 1; 
  int addrlen = sizeof(address); 
  
  char *hello = "Hello from server";
  
      while(1){
      char buffer[1024] = {0}; 
      printf("Server\n");
      // Creating socket file descriptor 
      if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { 
          perror("socket failed"); 
          exit(EXIT_FAILURE); 
      } 
  
      // Forcefully attaching socket to the port 8080 
      if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT,&amp;opt, 
      sizeof(opt))) { 
          perror("setsockopt"); 
          exit(EXIT_FAILURE); 
      } 
      address.sin_family = AF_INET; 
      address.sin_addr.s_addr = INADDR_ANY; 
      address.sin_port = htons( PORT ); 
  
      // Forcefully attaching socket to the port 8080 
      if (bind(server_fd, (struct sockaddr *)&amp;address,sizeof(address))&lt;0) { 
          perror("bind failed"); 
          exit(EXIT_FAILURE); 
      } 
  
      if (listen(server_fd, 1) &lt; 0) { 
          perror("listen"); 
          exit(EXIT_FAILURE); 
      }
      printf("Listening...\n");
      if ((new_socket = accept(server_fd, (struct sockaddr *)&amp;address,(socklen_t*)&amp;addrlen))&lt;0) { 
          perror("accept"); 
          exit(EXIT_FAILURE); 
      }
  
      valread = read( new_socket , buffer, 1024); 
      printf("%s\n",buffer ); 
      send(new_socket , hello , strlen(hello) , 0 ); 
      printf("Hello message sent\n"); 
  }
  return 0;
  }
  </code></pre>
  
  <p>My client so far:</p>
  
  <pre><code>#include &lt;stdlib.h&gt;
  #include &lt;stdio.h&gt;
  #include &lt;unistd.h&gt;
  #include &lt;string.h&gt;
  #include &lt;errno.h&gt;
  #include &lt;sys/stat.h&gt;  
  #include &lt;fcntl.h&gt;
  #include &lt;sys/wait.h&gt;
  #include &lt;sys/socket.h&gt; 
  #include &lt;sys/types.h&gt;
  #include &lt;arpa/inet.h&gt; 
  
  #define PORT 8080
  
  int main(int argc,char* argv[]){
  
  char* command = (char*) malloc(15*sizeof(char));
  int sock = 0, valread; 
  struct sockaddr_in serv_addr; 
  char *hello = "Hello from client"; 
  char buffer[1024] = {0};
  
  printf("Client\n");
  
  if ((sock = socket(AF_INET, SOCK_STREAM, 0)) &lt; 0){ 
      printf("\n Socket creation error \n"); 
      return -1; 
  } 
  
  serv_addr.sin_family = AF_INET; 
  serv_addr.sin_port = htons(PORT); 
  
  // Convert IPv4 and IPv6 addresses from text to binary form 
  if(inet_pton(AF_INET, "127.0.0.1", &amp;serv_addr.sin_addr)&lt;=0)  { 
      printf("\nInvalid address/ Address not supported \n"); 
      return -1; 
  } 
  
  if (connect(sock, (struct sockaddr *)&amp;serv_addr, sizeof(serv_addr)) &lt; 0) { 
      printf("\nConnection Failed \n"); 
      return -1; 
  }
  
  
  send(sock , hello , strlen(hello) , 0 ); 
  printf("Hello message sent\n"); 
  valread = read( sock , buffer, 1024); 
  printf("%s\n",buffer ); 
  
  return 0;
  }
  </code></pre>