티스토리 뷰
오늘은 C#으로 서버와 클라이언트 간의 파일 전송 예제 소스코드를 보도록 하겠습니다.
서버소스코드
using System; using System.IO; using System.Net; using System.Net.Sockets; // class Program { private static void Main() { // 서버 소켓 생성 Socket mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // 종단점 생성 IPEndPoint point = new IPEndPoint(IPAddress.Loopback, 8192); // 소켓 바인딩 mySocket.Bind(point); // 소켓을 대기 상태로 둠 mySocket.Listen(1); // 연결한 소켓을 받아들임 mySocket = mySocket.Accept(); // 데이터를 받을 버퍼 생성 byte[] buffer = new byte[4]; // 클라이언트로부터 파일 크기를 받음 mySocket.Receive(buffer); // 받은 데이터를 정수로 변환하고 변수에 저장 int fileLength = BitConverter.ToInt32(buffer, 0); // 버퍼 크기 새로 지정 buffer = new byte[1024]; // 현재까지 받은 파일 크기 변수 int totalLength = 0; // 파일을 만듦 FileStream fileStr = new FileStream("music.mp3", FileMode.Create, FileAccess.Write); // 받을 데이터를 파일에 쓰기 위해 BinaryWriter 객체 생성 BinaryWriter writer = new BinaryWriter(fileStr); // 파일 수신 작업 while (totalLength < fileLength) { // 클라이언트가 보낸 파일 데이터를 받음 int receiveLength = mySocket.Receive(buffer); // 받은 데이터를 파일에 씀 writer.Write(buffer, 0, receiveLength); // 현재까지 받은 파일 크기를 더함 totalLength += receiveLength; } // 종료 작업 writer.Close(); mySocket.Close(); } }
클라이언트 소스 코드
using System; using System.IO; using System.Net; using System.Net.Sockets; // class Program { private static void Main() { // 클라이언트 소켓 생성 Socket mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // 서버와 연결 mySocket.Connect(IPAddress.Loopback, 8192); // 파일을 엶 FileStream fileStr = new FileStream("music.mp3", FileMode.Open, FileAccess.Read); // 파일 크기를 가져옴 int fileLength = (int)fileStr.Length; // 파일 크기를 서버에 전송하기 위해 바이트 배열로 변환 byte[] buffer = BitConverter.GetBytes(fileLength); // 파일 크기 전송 mySocket.Send(buffer); // 파일을 보낼 횟수 int count = fileLength / 1024 + 1; // 파일을 읽기 위해 BinaryReader 객체 생성 BinaryReader reader = new BinaryReader(fileStr); // 파일 송신 작업 for (int i = 0; i < count; i++) { // 파일을 읽음 buffer = reader.ReadBytes(1024); // 읽은 파일을 서버로 전송 mySocket.Send(buffer); } // 종료 작업 reader.Close(); mySocket.Close(); } }
'IT 이야기 > 프로그래밍' 카테고리의 다른 글
[C언어 문제] 문자열 번갈아 출력하기 (2) | 2014.04.20 |
---|---|
PHP에서 유동 변수 만드는 방법 (0) | 2014.03.23 |
[C언어] 세 개의 단어를 입력받아 사전 순으로 가장 먼저 나오는 단어 출력하기 (0) | 2014.02.25 |
[C언어] 분수의 합을 구하는 프로그램 소스 (0) | 2014.02.24 |
JQuery Slider 추천! bxSlider, 간단한 설치, 애니메이션까지 (1) | 2014.02.23 |
[C언어] malloc(), free() 함수를 이용한 메모리 동적 할당 예제 (4) | 2013.12.05 |
[C언어 소스] 주소 관리 프로그램 소스 (28) | 2013.11.26 |
[HTML5 강의] 5. HTML5 기본태그, 목록 만들기 (0) | 2013.11.22 |
[HTML5 강의] 4. HTML5의 기본 태그, 텍스트 관련 태그 (0) | 2013.11.22 |
[HTML5 강의] 1. HTML5 시작하기 (2) | 2013.11.22 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- W3Schools Online Web Tutorials
- 구차니의 잡동사니 모음
- [IT]블로거팁닷컴
- 비앤아이님의 블로그
- Blog Suspect
- 즐거운하루 blog
- zinicap의 검색엔진 마케팅(SEM)
- 머니야머니야님의 블로그
- [Friend] AtinStory
- [기타배우기]해브원 박스
- [웹표준] SINDB.com
- 해커 C 이야기
- [애드센스] 길라잡이
- 정순봉의 IT SCHOOL
- 씨디맨의 컴퓨터이야기
- 2proo Life Story
- 못된준코의 세상리뷰
- [IT강좌] 정보문화사
- IN 대전
- 에우르트는 나쁜남자 -_-
- 씬의 싱크탱크
- 엔돌슨의 IT이야기
- 진이늘이
- 'Cooltime'의 블로그
- 후이의 Tistory
- Soulstorage
- 앤드&엔드의 블로그
- June Blog
- 노지의 소박한 이야기
- gbWorld
- 인터넷 속 나의 생각
- HarshNix
- ART of WEB
- 녹두장군 - 상상을 현실로
TAG
- php
- 강좌
- MBTI 검사
- 프로그래밍 문제
- 예제 소스
- 강의
- 인터넷 익스플로러
- 성공
- 효과음
- 소스코드
- 안드로이드 어플
- 안드로이드 어플 추천
- 인터넷
- MBTI
- 소스
- MBTI 자료
- 안드로이드
- C언어
- 모토로이
- C
- C언어 문제
- MBTI 테스트
- 프로그래밍
- MBTI 강좌
- JavaScript
- HTML
- C언어 소스
- 스마트폰
- It
- 리뷰
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함