게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[본삭금]소켓프로그래밍 FTP 제작 중 질문이있습니다.
게시물ID : programmer_10315짧은주소 복사하기
작성자 : 아라니나
추천 : 0
조회수 : 580회
댓글수 : 4개
등록시간 : 2015/05/21 17:56:04
옵션
  • 본인삭제금지

tcp/ip 소켓프로그래밍에 관하여 도움 부탁드립니다.

ftp 클라이언트와 서버를 만들고 있는 와중에 클라이언트의 ls 요청에 서버가 현재 디렉토리 목록을 클라이언트에게 보내는 부분에서 계속해서 오류가 발생합니다.

클라이언트의 해당 함수 소스 입니다.
void FileListShow(int sock)
{
uint8_t msgType = FileList;
ssize_t numBytesSent = send(sock, &msgType, sizeof(msgType), 0);
if (numBytesSent == -1) {
printf("send() error");
exit(1);
}
else if (numBytesSent != sizeof(msgType)) {
printf("sent unexpected number of bytes");
exit(1);
}

int n, len;
char *temp;
int length = 0;

char rcvBuffer[BUFSIZE];

temp = rcvBuffer;
while ((n = read(sock, temp, 1)) > 0)
{

if (length == BUFSIZE)
break;
temp++;
length++;

}

rcvBuffer[length] = '\0';

printf("received Data : %s\n", rcvBuffer);

close(sock);

}

서버의 해당 함수 소스 코드입니다.

void FileListShow(int clnt_sock)
{

DIR *dp;
struct dirent *dir;

dp = opendir( ".");
if (NULL != dp) 
{
while (dir = readdir(dp))
{
if (dir->d_ino == 0)
{
break;
}

send(clnt_sock, dir->d_name, strlen(dir->d_name), 0);
send(clnt_sock, " ", 1, 0);

}
}
closedir(dp);


}

함수의 매개변수는 각 각 파일 디스크립터입니다. 
실행하여 클라이언트에서 ls 를 입력시 서버, 클라이언트 둘다 반응이 없다가 서버를 강제 종료시키면 그제서야 클라이언트에서 파일 목록이 나타납니다. 어느 부분때문에 무한루프? 같은것에 빠지는것 같은데 그 원인을 모르겠습니다

캡처.JPG
캡처1.JPG

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호