2011-04-26 6 views
1

freet(), fwrite(), send() 및 recv() 같은 일반적인 기능을 사용하여 파일 전송을 위해 UNIX 소켓을 통해 GET 및 PUT 명령을 구현하려고합니다.unix TCP 소켓을 통해 이진 데이터를 보낼 수 없습니다.

그것은 텍스트 파일에 대한 잘 작동하지만 바이너리 파일에 실패 (차이가 말한다 : "이진 파일이 다릅니다")

다음에 대한 어떤 제안을 이해할 수있을 것이다 :

  1. 어떤 특정 명령이 있습니까 이진 데이터를 읽고 쓰려면?
  2. diff를 사용하여 이진 파일을 비교할 수 있습니까?
  3. 2 진 부품을 메모리 덩어리로 보낼 수 있습니까?

답변

3

FTP 프로토콜에는 텍스트 및 바이너리의 두 가지 작동 모드가 있습니다. FTP 클라이언트에서 시도해보십시오 - 사이의 전환 명령은 ASCII와 BIN이라고 생각합니다. 텍스트 모드는 CR/LF 쌍을 리콜했을 때만 효과가 있습니다.

+0

유닉스 TCP 소켓을 사용하여 FTP의 동작을 시뮬레이션하고 있으므로, 바이너리 파일을 간단한 유닉스 소켓을 통해 전송할 수있는 방법을 알고 싶습니다. – abcdxyz

+0

@abcdxyz FTP 서버에 어떤 모드 파일을 텍스트 또는 바이너리로 송수신하고 싶습니다. – nos

0

파일에서 읽은 다음 파일의 데이터를 소켓에 쓰려면 파일을 바이너리 모드로여십시오.

예, diff는 이진 파일을 비교하는 데 사용될 수 있습니다. 일반적으로 이진 파일을 비교하는 데는 거의 차이가없는 실제 인쇄를 억제하기 위해 -q option을 사용합니다. 가지고있는 경우 md5 또는 cmp을 사용할 수도 있습니다.

+0

제안에 감사드립니다 :)하지만 다른 문제에 직면하고 있습니다 .. 코드는 크기가 4.3kb 인 이미지를 전송하려고 할 때 완벽하게 작동하지만 5.7MB의 오디오 파일을 전송하는 것을 거부합니다. (pls help! do 데이터를 바이트로 변환 한 다음 전송해야합니까? – abcdxyz

관련 문제