We help IT Professionals succeed at work.
Get Started

How to transfer a file from client to server

codeQuantum asked
Last Modified: 2013-12-14
I need a simple way to transfer a tiny text file from a client java class to a server java class.

If possible, I want to do this bit per bit or octet per octet.

For the little background, this is for a course about java and networks... I am supposed to make java code to transfer the text file, then implement data verification later. (make sure no bits were lost in the way, and use a checksum to verify the data.)

But for now I only need help with file transfer.  Here is my "server" code so far :
// tcpServer.java by fpont 3/2000
// usage : java tcpServer <port number>.
// default port is 1500.
// connection to be closed by client.
// this server handles only 1 connection.
import java.net.*;
import java.io.*;
public class Serveur {
    public static void main(String args[]) {
	int port;
	ServerSocket server_socket;
	BufferedReader input;
	try { 
	    port = Integer.parseInt(args[0]);
	catch (Exception e) {
	    System.out.println("port = 1500 (default)");
	    port = 1500;
	try {
	    server_socket = new ServerSocket(port);
	    System.out.println("Server waiting for client on port " + 
	    // server infinite loop
	    while(true) {
		Socket socket = server_socket.accept();
		System.out.println("New connection accepted " +
				   socket.getInetAddress() +
				   ":" + socket.getPort());
		input = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
		// print received data 
		try {
		    while(true) {
			String message = input.readLine();
			if (message==null) break;
		catch (IOException e) {
		// connection closed by client
		try {
		    System.out.println("Connection closed by client");
		catch (IOException e) {
	catch (IOException e) {
/*import java.io.*;
import java.net.*;
public class Serveur {
   static final int port = 1500;
   public static void main(String[] args) throws Exception {
        ServerSocket s = new ServerSocket(port);
        Socket soc = s.accept();
        // Un BufferedReader permet de lire par ligne.
        BufferedReader plec = new BufferedReader(
                               new InputStreamReader(soc.getInputStream())
        // Un PrintWriter possède toutes les opérations print classiques.
        // En mode auto-flush, le tampon est vidé (flush) à l'appel de println.
        PrintWriter pred = new PrintWriter(
                             new BufferedWriter(
                                new OutputStreamWriter(soc.getOutputStream())), 
        while (true) {
           String str = plec.readLine();          // lecture du message
           if (str.equals("END")) break;
           System.out.println("ECHO = " + str);   // trace locale
           pred.println(str);                     // renvoi d'un écho

Open in new window

Watch Question
Distinguished Expert 2020
This problem has been solved!
Unlock 5 Answers and 8 Comments.
See Answers
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE