The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > High Level Programming
.
google unix.com




View Single Post in the UNIX and Linux Forums - Click on the Thread or Permalink to View Entire Thread -->
  #1 (permalink)  
Old 07-18-2007
arjunjag arjunjag is offline
Registered User
  
 

Join Date: Jul 2007
Posts: 12
pick the bug the server enters an infinite loop

here is the server and client side code now there is a bug after which the server enters an infinite loop.the server is designed as an echo server and if it reads /q then the server closes while the client can send messages till /q now after the frst msg when another msg is send infinite loop is entered
Server code
Code:
 while(j!=0)
       {
	  memset(buffer,0,1024);/*clear buffer*/
	 n = read(newsockfd,buffer,1024);/*read from client*/
	 if (n < 0) perror("\n ERROR reading from socket \n");/*check for errors*/
	 len=strlen(buffer);
	 puts(buffer);/*print message by client*/
	 write(newsockfd,"\n Client wrote \n",12);/*write to client*/
	  n=write(newsockfd,buffer,sizeof(buffer));/*write to client*/
	 if(n<0)perror("Write Failed");
	  while(i<len)
	   {
	     //printf("%d\n",i);
	     j= strcmp(buf,&buffer[i]);
	     if(j==0)
	       break;
	     i+=2;
	   }
Client Code

Code:
while(j==0)
	  {
    printf("\n Enter Message for Server");
    gets(buf);
    /* now that we are connected, start writing to the socket */	
    /* till write() returns 0, meaning the server closed	*/
    /* the connection.				*/
    
    rc = write(s, buf,sizeof(buf)); 
          if(rc<0)
      {
	perror("write failed");
      }
	  else
	    {
	  read(s,buf1,12);
	  read(s,buf2,sizeof(buf));
	    }
	  puts(buf1);/*print messages from server*/
	  puts(buf2);/*print messages from server*/
	  printf("want to write more data");
	  gets(ans);
	  j=strcmp(ans,"yes");
	  break;
      }
      }

Last edited by vino; 07-18-2007 at 10:17 AM.. Reason: added code tags