Upload and download files between the client server

I have a purpose for creating a client-server file transfer application. This may be a simple example. I tried the examples asked in similar questions in SOF, but they could not transfer the file.

I am trying to pass client and server through sockets. If there could be someone who could help me, I will be glad.

The client will upload the file to the server. Also, the client can download the file from the server. This is how to create an application.

Here is the client side 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 } } } } 

Here is the server side 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 } } } } } 

I could not run these source files, and I do not know why.

+4
source share
1 answer

I looked at the code and at first glance did not understand anything. So, I copied this as is, changed the file used in the server code to the file that existed on my system, and ran the code. It worked fine, so at least I can assure you that the code is correct and that it does what it should do. I ran my code on an Ubuntu machine, but I'm not sure how this could affect the result.

A few pointers that help me: 1) Do you use the TCPServer file and then TCPClient? (Yes, I know, but you never know) 2) Is there a process that can use port 3248? 3) Does the process executing the files have permission to read / write the specified paths? 4) Does the file specified in TCPServer actually exist? 5) Have you tried running class files outside of the IDE - so good as to learn how to be independent of the IDE.

Hope this was helpful and good luck with your assignment.

+4
source

Source: https://habr.com/ru/post/1336700/


All Articles