read함수에 대한 질문입니다.
글쓴이: ch0nn0m / 작성시간: 월, 2009/08/03 - 12:33오후
while((str_len=read(clnt_sock, id, sizeof(id))) > 0) { id[str_len]='\0'; } while((size=read(clnt_sock,passwd,sizeof(passwd)))>0) { passwd[size]='\0'; } printf("%s\n",id); printf("%s\n",passwd);
클라이언트에서 보내준 문자열을 read로 받아서 id와 passwd라는 배열에 저장했습니다...
그뒤 그 배열들을 출력해보려는데..아무것도 안나오네요...
배열에 저장되어 있는게 아닌건지..?
Forums:
몇가지 오류가
몇가지 오류가 있습니다.
1. read 가 id 길이만큼 안올 수 있습니다. ( 예를 들어 첫번째 while 에 str_len 이 sizeof(id) 보다 작을 경우 덮어씌워져서 id 의 일부분만 남게되는 경험을 하시게 될 공산이 높습니다. )
2. 그리고 소켓이 논블럭(non-block) 소켓이면 id / passwd 가 저장이 안 될 수 밖에 없습니다. ( 일단 0 이 리턴 될 확률이 매우매우 높습니다. )
3. 블럭( block ) 소켓이라도 time out 이 걸려있다던가 소켓이 제대로 접속이 안된경우가 있을 수 있습니다.
코드 내용이 일부분만 올라와있으니 판단이 애매하네요. 여하튼 str_len 과 size 를 loop 안에서와 loop 아래에서 번갈아 찍어보시는게 중요할 것 같습니다.
Neogeo - Future is Now.
Neogeo - Future is Now.
댓글 달기