안녕하세요.
인디소켓을 사용하지 않고 표준소켓만으로 파일 송수신을 구현해보았습니다.
클라이언트에서 서버로 파일을 요청하면 test.exe(약 480K)를 받는거죠.
파일을 원활하게 전송받기 위해서 수신버퍼를 4096K로 할당하고 파일을 그 사이즈만큼 잘라서 보내도록 하였습니다. 물론 클라이언트에서 받을때도 4096K로 받습니다.
접속이 정상적인 통신상태에서 아주 원활하게 파일 수신이 됩니다.
보낸쪽에서 파일사이즈 정보를 헤더에 먼저 보내주고, 받는쪽에서는 파일사이즈 정보를 미리 받은후 해당사이즈만큼 수신되는지 계속 체크합니다.
파일전송이 완료되면 정확하게 480K바이트로 파일이 수신됩니다.
그런데 문제는 다운받은 실행파일이 에러가 발생한다는 겁니다.
test.exe 파일을 실행하면 에러메시지가 발생하면서 실행이 안됩니다.
아마 파일의 내부에 데이터가 손상된걸로 유추되는데요.. 만약 그렇다면 송신측 파일사이즈와 수신측 파일사이즈가 일치하지 않아야 할텐데..둘다 사이즈가 동일합니다.
test.zip 파일로 압축된 파일을 수신받아도 마찬가지더군요.
혹시 이런 실행파일(*.exe) 이나 압축파일(*.zip) 전송시 특히 유의할점이 있
는지 경험자분들의 조언부탁드립니다.
참고로 초기 메지시 포맷은 (서버=>클라이언트)
파일헤더(식별자) + 파일명 + 총파일사이즈 + 패킷으로쪼개고 남은 파일사이즈
입니다. 패킷사이즈는 const 선언으로 4096K로 할당해주었습니다.
조언부탁드립니다. 수고하세요.
특별히 화일타입에 따라 다르게 보내지는 않습니다.
텍스트 화일은 잘 받아지고 실행되는지 해보시고 답변주세요...
여기 혹시 예제 있지 않나요 화일 송수신에 관한....
그거 보셔도 되고요