Server Client does not send file
I have a client and server that are communicating quite nicely and the connection is good, but I does not send the file using the methods that I wrote. I really dont know what I did wrong here at all. Well here is the servercode
Code :
import java.net.*;
import java.io.*;
class Server{
BufferedInputStream bis;
BufferedOutputStream bos;
byte[] data;
Socket socket;
ServerSocket serverSocket;
int in;
BufferedReader inm = null;
PrintWriter outm = null;
public Server()
{
try{
serverSocket = new ServerSocket(4444);
System.out.println("Server setup and listening...");
socket = serverSocket.accept();
System.out.println("Client connect");
System.out.println("Socket is closed = " +socket.isClosed());
inm = new BufferedReader(new InputStreamReader(socket.getInputStream()));
outm = new PrintWriter(socket.getOutputStream(), true);
System.out.println("from client: " +inm.readLine());
outm.println("ack 1: hi....");
System.out.println("from client: " +inm.readLine());
outm.println("ack 2: ok....");
receiveFile();
System.out.println("Socket closed = " +socket.isClosed());
outm.println("ack 3: take the file");
}catch (IOException e)
{
e.printStackTrace();
}
}
//make public to reverse fix
private void receiveFile(){
try{
byte[] receivedData = new byte[8192];
bis = new BufferedInputStream(socket.getInputStream());
bos = new BufferedOutputStream(new FileOutputStream("request.xml"));
while ((in = bis.read(receivedData)) != -1){
bos.write(receivedData,0,in);
}
bos.flush();
bos.close();
}catch (IOException e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
Server server = new Server();
}
}
and here is the client code:
Code :
import java.net.*;
import java.io.*;
class Client{
Socket clientSocket;
byte[] byteArray;
BufferedInputStream bis;
BufferedOutputStream bos;
int in;
BufferedReader inm = null;
PrintWriter outm = null;
public Client()
{
try{
clientSocket = new Socket("localhost", 4444);
System.out.println("Client is connect");
inm = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
outm = new PrintWriter(clientSocket.getOutputStream(), true);
System.out.println("Socket Closed = " +clientSocket.isClosed());
outm.println("msg 1: Client messageing open");
System.out.println("from server__ " +inm.readLine());
outm.println("msg 2: Sending file");
System.out.println("from server__ " +inm.readLine());
sendFile();
System.out.println("Socket closed = " +clientSocket.isClosed());
System.out.println("from server__ " +inm.readLine());
}catch(IOException e)
{
e.printStackTrace();
}
}
//make public to revers fix
private void sendFile(){
try{
bis = new BufferedInputStream(new FileInputStream("request.xml"));
bos = new BufferedOutputStream(clientSocket.getOutputStream( ));
byteArray = new byte[8192];
while ((in = bis.read(byteArray)) != -1){
bos.write(byteArray,0,in);
}
// bis.close();
bos.flush();
}catch(IOException e)
{e.printStackTrace();}
}
public static void main(String[] args){
Client client = new Client();
}
}