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 | 




 
											 
											
최근댓글