C# 서버와 클라이언트 간의 파일 전송 예제 소스코드입니다.
서버 소스 코드
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | 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(); } } | cs |
클라이언트 소스 코드
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 32 33 34 35 36 37 38 39 40 | 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(); } } | cs |
'Programming > C#' 카테고리의 다른 글
[.NET Core] Visual Studio Code 에서 C# Console 시작 (0) | 2020.04.20 |
---|---|
[C#] Delegate, Action 과 Func, 람다식, Event 정리 (0) | 2019.11.18 |
문자열 자르기 (0) | 2015.11.10 |
최근댓글