title: file uploading & downloading between server-client
body: <p>I have an assignment to create a client-server file transfer application.
  That could be a simple example. I tried the examples given in similar questions in SOF, but they were unable to transfer the file.</p>
  
  <p>I'm trying to communicate the client and the server via sockets. If there could be someone who could help me, I'll be glad.</p>
  
  <p>The client will upload the file to the server.Also the client could download the file from server.That's how I would create the application.</p>
  
  <p>Here is the client side code:</p>
  
  <pre><code>package wdc;
  
  import java.io.*;
  import java.io.ByteArrayOutputStream;
  import java.net.*;
  
  class TCPClient {
  
      public static void main(String args[]) {
          byte[] aByte = new byte[1];
          int bytesRead;
  
          Socket clientSocket = null;
          InputStream is = null;
  
          try {
              clientSocket = new Socket("127.0.0.1", 3248);
              is = clientSocket.getInputStream();
          } catch (IOException ex) {
              // Do exception handling
          }
  
          ByteArrayOutputStream baos = new ByteArrayOutputStream();
  
          if (is != null) {
  
              FileOutputStream fos = null;
              BufferedOutputStream bos = null;
              try {
                  fos = new FileOutputStream("C:\\testout.pdf");
                  bos = new BufferedOutputStream(fos);
                  bytesRead = is.read(aByte, 0, aByte.length);
  
                  do {
                          baos.write(aByte);
                          bytesRead = is.read(aByte);
                  } while (bytesRead != -1);
  
                  bos.write(baos.toByteArray());
                  bos.flush();
                  bos.close();
                  clientSocket.close();
              } catch (IOException ex) {
                  // Do exception handling
              }
          }
      }
  }
  </code></pre>
  
  <p>Here is the server side code: </p>
  
  <pre><code>package wds;
  
  import java.io.*;
  import java.net.*;
  
  class TCPServer {
  
      public static void main(String args[]) {
  
          while (true) {
              ServerSocket welcomeSocket = null;
              Socket connectionSocket = null;
              BufferedOutputStream outToClient = null;
  
              try {
                  welcomeSocket = new ServerSocket(3248);
                  connectionSocket = welcomeSocket.accept();
                  outToClient = new BufferedOutputStream(connectionSocket.getOutputStream());
              } catch (IOException ex) {
                  // Do exception handling
              }
  
              if (outToClient != null) {
                  File myFile = new File("C:\\testserver.pdf");
                  byte[] mybytearray = new byte[(int) myFile.length()];
  
                  FileInputStream fis = null;
  
                  try {
                      fis = new FileInputStream(myFile);
                  } catch (FileNotFoundException ex) {
                      // Do exception handling
                  }
                  BufferedInputStream bis = new BufferedInputStream(fis);
  
                  try {
                      bis.read(mybytearray, 0, mybytearray.length);
                      outToClient.write(mybytearray, 0, mybytearray.length);
                      outToClient.flush();
                      outToClient.close();
                      connectionSocket.close();
  
                      // File sent, exit the main method
                      return;
                  } catch (IOException ex) {
                      // Do exception handling
                  }
              }
          }
      }
  }
  </code></pre>
  
  <p>I couldn't run these source files and I don't know why.</p>