title: Socket Programming C/C++ - recv function hangs?
body: <p>My recv function hangs while getting reponse from server.</p>
  
  <p>Client side code in c/c++:</p>
  
  <pre><code>void sockStuff() {
  
   int sock, bytes_recieved,bytes_send;
   char send_data[1024], recv_data[4096];
  
   struct hostent *host;
   struct sockaddr_in server_addr;
  
   host = gethostbyname("127.0.0.1");
  
   if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
    perror("SocketError");
    exit(1);
   }
   server_addr.sin_family = AF_INET;
   server_addr.sin_port = htons(50500);
   server_addr.sin_addr = *((struct in_addr *) host-&gt;h_addr);
   bzero(&amp;(server_addr.sin_zero), 8);
  
  
   if (connect(sock, (struct sockaddr *) &amp;server_addr, sizeof(struct sockaddr))
     == -1) {
    perror("ConnectToError");
    exit(1);
   }
  
  
      bytes_send = send(sock, a, strlen(a), 0);
      bytes_send = shutdown(sock, 1);
  
  
   bytes_recieved = recv(sock, recv_data, 4096, 0); //Where the program hangs??
   recv_data[bytes_recieved] = '\0';
   printf("\nRecieved data = %s ", recv_data);
   cout &lt;&lt; endl &lt;&lt; endl;
  
   shutdown(sock,2);
  
  
  
  }
  </code></pre>
  
  <p>My Client is C/C++ and server side is OpenEdge Progress.
  Please see code and suggest what went wrong with this.??</p>