도와주세요...ㅜㅜ
제가 지금 udp로 파일송수신 프로그램을 짜고 있는데요...
환경은 unix
서버에서 클라로 파일 목록은 다 보내지거든요...
근데 문제는
클라가 원하는 파일명을 치면
서버쪽으로 그 파일이 있는지 확인 해서 그에 해당하는 yes나 no를 보내 주는데
만약 파일이 없으면
클라쪽에서 파일이 없다고 나와요...
근데 파일이 있으면요
무한 루프 돌아요...
이거 왜그런지좀 갈켜 주세용....하루 종일 해도 안되네요...ㅜㅜ
소스는...
while (1){
if(!strcmp(mes, "Yes")) break;
fputs("Input File name (Q to Quit):" , stdout); //받을 파일의 이름 입력 받아서
fgets(file_name , sizeof(file_name)-1 , stdin);
if(!strcmp(file_name, "q\n")) exit (1); //q를 입력받으면 바로 종료
sendto( sock , file_name, strlen(file_name)-1, 0 , (struct sockaddr*)&serv_addr , sizeof(serv_addr) );
sleep(1);
while(1)
{
len=recvfrom(sock, mes, sizeof(mes)-1 , 0 , (struct sockaddr*)&serv_addr , &addr_size); //server에서 확인된 미시지 전송받음
mes[len]='\0';
if(!strcmp(mes, "Yes")) {
printf("file to server sucess"); //파일이 있는경우 다음으로..
}
else printf("FILE open EORROR"); //파일없으면 다시
break;
}
참고로 밖에 큰
참고로 밖에 큰 while문이 한개 더 있답니다...ㅜㅜ
break 문은 한 while문만
break 문은 한 while문만 빠져나갑니다.
while문이 2개가 있으니 한개는 빠져나가지 못하는거죠.
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
그래서 첫 while밑에
그래서 첫 while밑에 또 if문을 사용해서 break문을 넣었는데...
그렇게 하면 안되나요???
예 안됩니다. 아래쪽
예 안됩니다.
아래쪽 break 문이 실행되기 전에 기존 break 문에서 안쪽 while문을 빠져나가버립니다.
그냥 안쪽의 while문을 함수로 만들어서 사용하시면 될것 같은데요.
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
함수로
함수로 만들어라...
데충어떻게 만들어야 되는지좀...
그럼 만약 첫 while문 밑에 if문을 제일 마지막에 넣어도 안되는 건가요??
생각해 보니. 굳이
생각해 보니.
굳이 함수로 만들 필요 없이
안쪽 while문을 제거하고 적절히 수정해보세요.
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
댓글 달기