[C#] 파일 다운로드 예제 - 소켓 부품 만들기


Development note/C#  2013. 2. 25. 09:00

안녕하세요. 명월입니다.

 

이번 포스팅에서는 파일 다운로드 서버 소켓이랑 클라이언트 소켓 부품을 만들어 보도록 하겠습니다.

서버와 클라이언트 프로젝트를 분리해서 생성하였습니다.

 

그럼 먼저 서버 소켓 부터 확인 해 보도록 하겠습니다.

먼서 소켓으로 부터 상속 받았습니다.

그리고 서버를 접속하면 그 하위 운용소켓을 선언하였습니다.( 현재 상태로는 다중 접속은 불가능 합니다. 다중 선택이 가능하게 하려면 위 m_SubServer 를 배열로 놓고 그 배열을 관리하는 매소드도 필요합니다.)

 

생성자는 우리가 기본적으로 사용하는 것은 미리 다 선언해 버리고 포트만 받고 대기하게 처리하겠습니다.

Accept 함수는 클라이언트 접속 대기를 하는 함수 입니다. 현재 이 부분은 종료처리를 하지 않았기 때문에 대기 상태에 프로그램을 종료하면 완전히 종료가 되지 않는 버그가 있습니다.

즉 종료처리 부분을 작성해야 하는데 아직 작성하지 못했습니다.

 

밑 Send 메소드는 메시지의 데이터 길이까지 전송하여 메시지가 밀리는 버그(?)를 해결하도록 하였습니다.

위는 파일을 전송하기 위한 메소드 입니다.

메시지를 받는 부분입니다.

서버 단에서는 파일을 받는 부분 즉 클라이언트에서 업로드 하는 부분은 없습니다. 그래서 파일 받는 메소드는 작성하지 않았습니다.

 

다음은 클라이언트 부품을 확인 하겠습니다.

서버에서는 그냥 지나쳤는데 위에 System.Net 과 System.Net.Sockets 를 선언해야 합니다.

 

아래 생성자는 서버와 다르게 IPEndPoint 를 적용하고 Connect 를 하겠습니다.

메시지 수신 메소드 입니다.

클라이언트 부분에서는 파일 수신 메소드를 생성해야 겠습니다.

 

********************** 수정 2013 - 02 - 25*************************

제가 오늘 점심때 블로그확인 하다가 틀린점을 하나 찾았네요... 클라이언트의 이 부분은 사용하지 않는 메소드 입니다. 버그 수정해 나가다가 이 부분을 빼 버렸습니다

************************************************************************

 

여기까지 부품 설명이었습니다.

다음 포스팅에서는 서버폼을 조립하겠습니다.

링크 - [C#] 파일 다운로드 예제 소스