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


출처 : http://www.jynote.net/732

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기