Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.35 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Net;
  4. using System.Net.Sockets;
  5. using System.Text;
  6.  
  7. namespace tcp
  8. {
  9.     class file_server
  10.     {
  11.         /// <summary>
  12.         /// The PORT
  13.         /// </summary>
  14.         const int PORT = 9000;
  15.         /// <summary>
  16.         /// The BUFSIZE
  17.         /// </summary>
  18.         const int BUFSIZE = 1000;
  19.  
  20.         const string IP = "10.0.0.1";
  21.  
  22.         static TcpListener serverSocket;
  23.  
  24.         /// <summary>
  25.         /// Initializes a new instance of the <see cref="file_server"/> class.
  26.         /// Opretter en socket.
  27.         /// Venter på en connect fra en klient.
  28.         /// Modtager filnavn
  29.         /// Finder filstørrelsen
  30.         /// Kalder metoden sendFile
  31.         /// Lukker socketen og programmet
  32.         /// </summary>
  33.         private file_server ()
  34.         {
  35.             IPAddress ipAddress = IPAddress.Parse(IP);
  36.             serverSocket = new TcpListener(ipAddress,PORT);
  37.             int requestCount = 0;
  38.             TcpClient clientSocket = default(TcpClient);
  39.             serverSocket.Start();
  40.             Console.WriteLine(" >> Server Started");
  41.             clientSocket = serverSocket.AcceptTcpClient();
  42.             Console.WriteLine(" >> Accept connection from client");
  43.  
  44.             while ((true))
  45.             {
  46.                 try
  47.                 {
  48.                     string serverResponse;
  49.                     Byte[] sendBytes;
  50.                     requestCount = requestCount + 1;
  51.                     NetworkStream networkStream = clientSocket.GetStream();
  52.                     byte[] bytesFrom = new byte[BUFSIZE];
  53.                     networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
  54.                     string dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);
  55.                     if(!File.Exists(dataFromClient))
  56.                     {
  57.                         serverResponse = "Error: File wasn't found";
  58.                         sendBytes = Encoding.ASCII.GetBytes(serverResponse);
  59.                         networkStream.Write(sendBytes, 0, sendBytes.Length);
  60.                         networkStream.Flush();
  61.                         continue;
  62.                     }
  63.                     long fileSize = new System.IO.FileInfo(dataFromClient).Length;
  64.                     sendFile(dataFromClient, fileSize, networkStream);
  65.                     networkStream.Write(sendBytes, 0, sendBytes.Length);
  66.  
  67.                 }
  68.                 catch (Exception ex)
  69.                 {
  70.                     Console.WriteLine(ex.ToString());              
  71.                     clientSocket.Close();
  72.                     serverSocket.Stop();
  73.                     Console.WriteLine(" >> exit");
  74.                     Console.ReadLine();
  75.                 }
  76.             }
  77.         }
  78.  
  79.         /// <summary>
  80.         /// Sends the file.
  81.         /// </summary>
  82.         /// <param name='fileName'>
  83.         /// The filename.
  84.         /// </param>
  85.         /// <param name='fileSize'>
  86.         /// The filesize.
  87.         /// </param>
  88.         /// <param name='io'>
  89.         /// Network stream for writing to the client.
  90.         /// </param>
  91.         private void sendFile (String fileName, long fileSize, NetworkStream io)
  92.         {
  93.             using(FileStream fs = new FileStream(fileName,FileMode.Open,FileAccess.Read))
  94.             {
  95.                 byte[] buf = new byte[BUFSIZE];
  96.                 int offset = 0;
  97.                 while((offset += fs.Read(buf,offset,BUFSIZE)) <= fileSize )
  98.                 {
  99.                     io.Write(buf, 0, BUFSIZE);
  100.                 }
  101.             }
  102.         }
  103.  
  104.         /// <summary>
  105.         /// The entry point of the program, where the program control starts and ends.
  106.         /// </summary>
  107.         /// <param name='args'>
  108.         /// The command-line arguments.
  109.         /// </param>
  110.         public static void Main (string[] args)
  111.         {
  112.             Console.WriteLine ("Server starts...");
  113.             new file_server();
  114.         }
  115.     }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement