[완료] (x)inetd를 통해 통신하는 서버에서 파일전송 문제.
글쓴이: ByB / 작성시간: 목, 2011/08/25 - 7:37오후
하아~ 너무 초보적인것을 모르고 있는 것은 아닌가 합니다만... T.T:
제가 xinetd를 통해서 접속을 받는 서버를 만들고 있는데요,
파일을 client가 전송하면 해당 위치에 가져다 놓는 거에요.
그런데, xinetd로 부터 데이터 I/O는 stdin/stdout을 통해서 하는 거다보니,
파일을 받는 부분을 다음과 같이 했습니다.
-----------------------------------
......
int fi = fileno(fd); // fd : stdin
int fo = open(newfile,0_CREAT);
while(clen != flen) // flen은 이미 알고 있는 저장할 파일의 크기
{
if((c = read(fi, buf, sizeof(buf))) <= 0)
break;
clen += write(fout, buf, c);
}
.....
----------------------------------
그런데, 문제는 read 부분에서 멈춰서 끝나지 않는 겁니다. T.T;
client쪽에서는 이미 다 데이터를 전송한 것을 확인했구요.
도대체, 뭐가 문제일까요?
어떻게 하면 해결할 수 있을까요?
고수님들의 답변을 기다립니다.
감사합니다.
Forums:
자답입니다. ^^a; 네트워크 관련 코드엔 문제가
자답입니다. ^^a;
네트워크 관련 코드엔 문제가 없었습니다.
--------
int fo = open(newfile,0_CREAT);
--------
이 코드가 잘못되었더군요.
즉, 아래의 write에서 에러가 나고 있었는데, 그것을 점검하지 않앗던 것입니다.
이유인 즉은, open시 O_WRONLY 등의 write 옵션이 없으니 파일을 기록할 수 없었던 것입니다.
그래서, 계속 -1이 리턴이 되었고, 위 while 문의 조건이 만족하지 않으니
무한루프를 돌고 있었던 것입니다.
X팔려서 이 질문을 지울까 했지만,
혹시 누군가 저와같은 실수를 할까봐 남겨둡니다. ^^A;;
----------------------------------------------------------=>
Be supercalifragilisticexpialidocious, run for your life!
댓글 달기