|
공동현님이 작성하신 프로그램이 FTP 보다 전송 속도가 느리다고 하신 것 같은데
차이점이 생기는 이유는 바로 흐름제어와 개발 방식의 차이에 있습니다.
소켓 프로그래밍은 동기/비동기 방식으로 나뉘는데, 보통 편의상 비동기 소켓을 많이 사용하는데
(공동현님도 비동기 소켓을 쓰셨다고 생각됩니다)
이 경우에는 버퍼에 있는 데이터를 꾸준히 체크해서 새로운 데이터를 넣어주고 하는 작업을 하게 됩니다.
이 작업에 효율에 따라서 전송 속도에 큰 차이를 보이게 되지요.
비동기 소켓은 흐름제어를 매우 유연하게 처리해줘야 성능을 낼 수 있기 때문에 생각보다 까다롭습니다.
간단한 해결 방법으로 동기 소켓을 이용하는 방법이 있습니다.
하지만 동기소켓을 사용하면 데이터를 전부 전송하기 전에는 함수가 리턴을 하지 않기 때문에
스레드로 처리를 하지 않으면 프로그램이 먹통이 되는 현상을 겪을 수 있습니다.
FTP도 어짜피 소켓 기반의 TCP 프로토콜을 이용한 프로그램에 불과합니다.
속도 차이는 프로그래머의 컨트롤 차이에 의하여 오는 것이지요.
공동현 님이 쓰신 글 :
: Socket으로 업데이트 프로그램을 만들었습니다.
: 그런데, FTP보다 속도가 엄청나게 차이가 나네요?
: 어차피 FTP도 소켓을 이용한건데....-.-;;
: 그렇다고 해서 프로토콜이 많은것도 아니고, 서버나 클라이언트의 메모리 사용도 파일 전송에 관련된것만 쓰기 때문에 더욱 이해가 안가더군요.
:
: 그럼, 만약에 Socket으로 FTP프로그램을 만든다면 cute ftp같은 상용 프로그램에 비하면 엄청나게 떨어질텐데....FTP 프로그램들은 자체적으로 Socket을 이용하고 파일전송을 하는 프로토콜만을 패킷에 넣었을텐데
: 고수님들의 조언 부탁드립니다.
: 참고로, 메신저중엔 icq와 드림위즈의 지니가 무척 빠르더군요.
: ?.? ;;
:
: --- Change World ---
:
|