[[질문] 리눅스에서 C로 ftp client 만들 때 오류

trauma9의 이미지

안녕하세요 오랜만에 C로 코딩할 일이 생긴 개발자 입니다.
개발 중에 도저히 풀리지 않아 이렇게 질문 드립니다..고수님들 길을 열어 주세요..

현재 ftp client를 만들고 있습니다.
os는 리눅스 레드핫 이구요..서로 다른 네트웍에 있는 ftp server에 정상적으로 접속(control connection)이 됩니다.
ftp server가 passive mode로 설정되어 있어서 다음과 같은 순서로 명령을 보냅니다..

1. 연결 -> 확인 응답 수신
2. USER -> 응답 수신
3. PASS -> 응답 수신
4. TYPE I -> 응답수신
5. PASV -> 응답 수신 (ip1,ip2,ip3,ip4,port1,port2)
6. 5에서 수신 받은 ip1.ip2.ip3.ip4, port1*256+port2 로 ip와 port를 설정하여 새로운 소켓으로 data connection을 연결하려 할때 이부분에서 연결이 되지 않고 connection time out이 발생합니다.

6에서 port를 21처럼 이미 열려 있는 것을 넣으면 연결은 됩니다. 물론 정상 응답은 오지 않습니다.
혹시나 해서 리눅스의 ftp 명령을 써서 ftp server에 접속하면, get 으로 데이터 까지 다운이 됩니다.
데이터 다운 중에 netstat를 해보면 5에서 수신받은 포트가 열려 있습니다.

미치겠습니다..이 문제로 벌써 3일째 고민하고 있습니다.
제가 혹시 명령어 전송을 빠뜨려서 포트가 안 열리는 것인지..아 정말 미치겠습니다..
도움좀 주세요..ㅠㅠ

madman93의 이미지

이런 소스들을 가지고 미리 테스트 해 보시고 적용하시는게 좋을 것 같습니다.

http://kldp.org/node/118595

---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------

trauma9의 이미지

알려주신 링크를 따라 소스를 받아 컴파일 해보니 오류가..뜹니다..ㅜㅜ
리눅스에서 c 개발이 처음인지라..makefile도 잘 모르겠네요..=3

madman93님의 관심에 감사 드립니다..^^;

좀더 깊게~~~ 삽질 해봐야 할려나 보네요..

semmal의 이미지

꼭 C를 써야하는게 아니라면, OO에 대한 지식만 있다면, Qt에 있는 Ftp라이브러리도 쓸만합니다.

qmake를 쓰는게, makefile 만들고 하는 것보다는 약간 쉬울겁니다.

------------------------------
How many legs does a dog have?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.