|
サーバが無限ループに入るバグを選ぶ
ここには、無限loop.the後、サーバーとサーバーは、エコーサーバーとして設計されている入力する場合は、読み取りの問題であることを、サーバーとクライアント側のコードは/それは、クライアント/ qをこれまでのメッセージを送信することができますは、サーバー終了qをfrstメッセージの後に別のメッセージが無限ループが入力されて送信されます
サーバーコード
コード:
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;
}
クライアントコード
コード:
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;
}
}
ヴィノの編集最終更新、 2007年7月18日に 10:17午前..理由:コードのタグを追加
|