소켓으로 ftp 에 파일 가져오기...
안녕하세요.
소켓을 이용해서 ftp 에서 파일을 가져오려고 합니다.
소켓을 생성하고 접속, 파일을 가져오려고 하는데
잘 안되네요... 조언좀 부탁드립니다.
수고하세요.
// sub 함수
// msg -> to
int send_data(char * msg, int to)
{
int ret_value = 0;
ret_value = write(to, msg, strlen(msg));
if (ret_value != strlen(msg))
{
printf("Write Error\n");
return 0;
}
return 1;
}
// 메인 부분
// 소켓 생성
s = socket(PF_INET, SOCK_STREAM, 0);
if (s == -1)
{
bail("socket()");
}
// 서버 주소 설정
memset(&sock_server, 0, sizeof(sock_server) );
sock_server.sin_family = AF_INET;
sock_server.sin_port = htons(21);
sock_server.sin_addr.s_addr = inet_addr(test_server.ip);
if (sock_server.sin_addr.s_addr == INADDR_NONE)
{
bail("bad address");
}
// 서버 접속
len_sock = sizeof(sock_server);
z = connect(s, (struct sockaddr *)&sock_server, len_sock);
if (z == -1)
{
bail("connect()");
}
// 아이디 입력
sprintf(buf, "USER %s\r\n", test_server.id);
ttt= send_data(buf, s);
if (ttt == 0)
{
printf("Error ID input\n");
}
// 패스워드 입력
sprintf(buf, "PASS %s\r\n", test_server.pw);
ttt = send_data(buf, s);
if (ttt == 0)
{
printf("Error PW input\n");
}
ttt = send_data("TYPE I\r\n", s);
if (ttt == 0)
{
printf("Error type\n");
}
// 가져올 파일 명
sprintf(buf, "RETR %s\r\n", "./test/time" );
ttt = send_data(buf, s);
// 파일 쓰기
fp = fopen("test.elf", "wb");
while( (ttt = read(s, buf, 1024)) != 0)
{
fwrite(buf, 1, ttt, fp);
}
fclose(fp);
close(s);
Re: 소켓으로 ftp 에 파일 가져오기...
다른건 몰겠구..
socket()이 이상하네요.
댓글 달기