|
SOCKET s;
SOCKADDR_IN addr;
char buf2[1024];
int i,len;
s=socket(AF_INET, SOCK_STREAM, 0);
if ( s != INVALID_SOCKET )
{
addr.sin_family = AF_INET;
addr.sin_port = htons(4643);
addr.sin_addr.s_addr = inet_addr("xxx.xxx.x.xxx"); //내 주소값.
if( bind(s, (LPSOCKADDR)&addr, sizeof(addr)) != SOCKET_ERROR )
{
FILE *fp;
fp = fopen("test.pck", "wb");
while (true) {
len = recv(s, buf2, 1024,0);
if (len <= 0)
break;
fwrite(buf2, len, 1, fp);
}
fclose(fp);
}
}
IdFTP1->WriteLn("TYPE ASCII");
IdFTP1->WriteLn("PORT xxx,xxx,x,xxx,18,35"); //내 주소의 포트 18*256+35=4643.
IdFTP1->WriteLn("LIST -RF");
위와같이 하여 포트를 열고 ftp쪽 서버가 전송해주는 LIST값을 받을려 합니다.
포트는 열고 대기하는건 확인이 되더군요. 그런데 ftp쪽에 명령을 주어
자료를 전송하면..거부가 되더군요.
음 원래 bind로 한번 열어두면 열어둔 포트에 패킷이 올때까지 기다리는거 아닙니까?
netstat -an으로 보면 4643포트로 대기중이던데요..
뭐가 잘못되었는지 모르겠네요. 도와주세요 :-)
p.s 그냥 볼랜드 소켓으론 이 방식으로 전송은 받는데..winsock은 왜 그런지 모르겠네요.
|