The UNIX and Linux Forums  
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.

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-23-2007
arjunjag arjunjag is offline
Registered User
  
 

Join Date: Jul 2007
Posts: 12
Bug has developed

Guys there is another bug that has developed.........now messaged above 6 bytes are trimmed and echoed back to client.After the first message the echo is not regular.I have put a loop in both client and server to check for closing.Moreover for connection close i also need to put another clause that if there is a connection break in either server or client the connection should be closed from other side.Below are the server and clinet side codes after connection

Server
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);
      for(i=0;i<=len;i++)
	{
	  //strcpy(buf1,&buffer[i]);
	  //strcat(buf1,&buffer[i+1]);
	  k= strcmp("/",&buffer[i]);
	
	  if(k==0)
	    break;
	  break;
	}
	      for(p=i;p<=len;p++)
		{
		  j= strcmp("q",&buffer[p]);
		
	      if(j==0)
		{
		  close(newsockfd);
		  close(sockfd);
		  exit(0);
		  
		}
		}
	
	      puts(buffer);/*print message by client*/
	      write(newsockfd,"\n Client wrote",14);/*write to client*/
	      n=write(newsockfd,buffer,sizeof(buffer));/*write to client*/
	      if(n<0)perror("Write Failed");
	
      
    }
Client Side
Code:
	while(k!=0)
	  {
	    memset(&buf, 0, sizeof(buf));
    printf("\n Enter Message for Server");
    gets(buf);
    rc = write(s, buf,sizeof(buf)); 
     if(rc<0)
      {
	perror("write failed");
      }
    /* now that we are connected, start writing to the socket */	
    /* till write() returns 0, meaning the server closed	*/
    /* the connection.				*/
    len=strlen(buf);
    for(i=0;i<=len;i++)
      {
	//strcpy(b1,&buf[i]);
	//strcat(b1,&buf[i+1]);
	       
	l= strcmp("/",&buf[i]);
      
	if(l==0)
	  break;
	break;
      }
	    for(p=i;p<=len;p++)
	      {
	    k=  strcmp("q",&buf[p]);
	    if(k==0)
	      {
		close(s);
		exit (0);
	      }
	      }

	    read(s,buf1,14);
	    read(s,buf2,1024);
	    puts(buf1);/*print messages from server*/
	    puts(buf2);/*print messages from server*/
    
    
	  }
      }

Last edited by reborg; 07-23-2007 at 09:03 AM.. Reason: code tags