Skip to Main Content

Java APIs

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

File transfer, read write through sockets in client server programming java

795412Mar 7 2010 — edited Mar 11 2010
Hello All, need help again.
I am trying to create a Client server program, where, the Client first sends a file to Server, on accepting the file, the server generates another file(probably xml), send it to the client as a response, the client read the response xml, parse it and display some data. now I am successful sending the file to the server, but could not figure out how the server can create and send a xml file and send it to the client as response, please help. below are my codes for client and server

Client side
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;


public class XMLSocketC 
{

	public static void main(String[] args) throws IOException 
    {
		//Establish a connection to socket
		Socket toServer = null;
		String host = "127.0.0.1";	
		int port = 4444;
		try 
		{
			toServer = new Socket(host, port);
			} catch (UnknownHostException e) {
            System.err.println("Don't know about host: localhost.");
            System.exit(1);
        } catch (IOException e) {
            System.err.println("Couldn't get I/O for the connection to host.");
            System.exit(1);
        }
		//Send file over Socket
        //===========================================================
        BufferedInputStream fileIn = null;
		BufferedOutputStream out = null;
		
		// File to be send over the socket.
		File file = new File("c:/xampp/htdocs/thesis/sensorList.php");
		
		// Checking for the file to be sent.
		if (!file.exists()) 
		{	
			System.out.println("File doesn't exist");
			System.exit(0);
		}
	
		try
		{	
			// InputStream to read the file
			fileIn = new BufferedInputStream(new FileInputStream(file));
			
		}catch(IOException eee) 
		{
			System.out.println("Problem, kunne ikke lage fil"); 
		}
	
	
		try
		{
			InetAddress adressen = InetAddress.getByName(host);
			
			try
			{
			
				System.out.println("Establishing Socket Connection");
				
				// Opening Socket
				Socket s = new Socket(adressen, port);
				
				System.out.println("Socket is clear and available.....");
				
				// OutputStream to socket
				out = new BufferedOutputStream(s.getOutputStream());
				
				byte[] buffer = new byte[1024];
				int numRead;
				//Checking if bytes available to read to the buffer.
				while( (numRead = fileIn.read(buffer)) >= 0) 
				{
					// Writes bytes to Output Stream from 0 to total number of bytes
					out.write(buffer, 0, numRead);
					
				}
	
				// Flush - send file
				out.flush();
				
				// close OutputStream
				out.close();
				
				// close InputStrean
				fileIn.close();
			}catch (IOException e) 
			{}
	
		}catch(UnknownHostException e) 
		{
			System.err.println(e);
		}
				
        //===========================================================
        
        //Retrieve data from Socket.
		//BufferedReader in = new BufferedReader(new InputStreamReader(toServer.getInputStream()));
		DataInputStream in = new DataInputStream(new BufferedInputStream(toServer.getInputStream()));
		//String fromServer;
        
        //Read from the server and prints.
		//Receive text from server
		FileWriter fr = null;
		String frn = "xxx_response.xml";
		try {
			fr = new FileWriter(frn);
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		try{
			String line = in.readUTF();                    //.readLine();
			System.out.println("Text received :" + line);
			fr.write(line);
		} catch (IOException e){
			System.out.println("Read failed");
			System.exit(1);
		}

           
        in.close();
        toServer.close();
        
    }

}
    
	
public class XMLSocketS 
{	
	 public static void main(String[] args) throws IOException 
	 {
		//Establish a connection to socket
		 ServerSocket serverSocket = null;
	        try {
	            serverSocket = new ServerSocket(4444);
	        } catch (IOException e) {
	            System.err.println("Could not listen on port: 4444.");
	            System.exit(1);
	        }
	     Socket clientLink = null;
	     while (true) 
			{
				try 
				{
					clientLink = serverSocket.accept();
	        
			        System.out.println("Server accepts");
					BufferedInputStream inn = new BufferedInputStream(clientLink.getInputStream());
					BufferedOutputStream ut = new BufferedOutputStream(new FileOutputStream(new File("c:/xampp/htdocs/received_from_client.txt")));
								
					byte[] buff = new byte[1024];
					int readMe;
						
					while( (readMe = inn.read(buff)) >= 0) 
					{	//reads from input stream, writes the file to disk
						ut.write(buff, 0, readMe);
					}
					
					
					// close the link to client
					clientLink.close();					
					// close InputStream
					inn.close();					
					// flush 
					ut.flush();					
					// close OutputStream
					ut.close();	
					
					//Sending response to client	
					//============================================================
					
					//============================================================
					System.out.println("File received");
				
			
			
		}catch(IOException ex) 
		{System.out.println("Exception.");}
		
				finally 
				{
					try 
					{
						if (clientLink != null) clientLink.close();
					}catch(IOException e) {}
	
				}
	
	        clientLink.close();
	        //serverSocket.close();
	    }

	 }
}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Apr 8 2010
Added on Mar 7 2010
11 comments
2,372 views