원시 명령을 사용하여 FTP 서버에 파일을 업로드하려고합니다. 네, 저는 이것을 수행하는 프로그램과 패키지가 있음을 압니다. 그러나 광산은 그러한 사치가없는 임베디드 어플리케이션입니다. 내 문제는 그 모든 적절한 명령을 성공적으로 발행 후, 그 파일이 서버에 존재하지 않는 것으로 나타났습니다. 여기 원시 FTP STOR 명령을 사용하는 방법
내가 무슨 짓을했는지 :- I 포트 21 (Sock1) 내 FTP 서버에 명령 소켓 연결을 설정하고 인사말을 받게 나는 "USER MyUserName 에다"보내
- (코드 220) 및 내가 "유형 I"를 보내고 성공 코드가 나타날 성공 코드 (230)
- 을 "mypassword을 PASS"수신 전송 성공 코드를 331
- 을받을 200
- "PASV"를 보내 6 자리 숫자와 함께 성공 코드 227을받습니다.
- 이 숫자를 IP 주소와 포트로 디코딩합니다. 그들은 합리적으로 보인다.
- 위의 주소와 포트 (Sock2)에 대한 TCP 데이터 소켓 연결을 성공적으로 엽니 다.
- 나는 "STOR myfilename"를 보내 내가 successfuly Sock2에 myfilename의 내용을 보내
- 성공 코드 (150)를받을 수 있습니다.
- 나는 Sock2를 닫은 다음 Sock1을 닫는다.
모든 것이 정상적으로 처리되었지만 서버에는 파일이 없습니다. 아무도 내가 뭘 잘못했는지 말해 줄 수 있니?
PUT 명령을 사용하여 다양한 FTP 클라이언트 프로그램을 사용하여 파일을 업로드 할 수 있으므로 서버의 Ok를 알고 있습니다.
서버가 성공적으로 전송할 때까지 기다려야한다는 점을 제외하고는 대부분 괜찮습니다. 즉 # 10 단계에서 sock2를 닫고 서버에서 226을 기다린 다음 sock1 만 닫습니다. 그리고 sock1을 닫기 전에 응답을 기다리는 것을 포함하여 종료 명령을 추가하십시오. 그 외에도 실제 구현은 여기에서 설명하는 것과 다릅니다. –
당신은 Steffen이었고, sock2를 먼저 닫고 226을 기다렸습니다. 이것을 "답변"으로 제출하면 동의 할 것입니다. – DontPanic