I am trying to send file from java app to a remote c# application through socket here is the code C#
TcpClient tcpClient = new TcpClient();
                tcpClient.Connect(ip, 1593);
                NetworkStream networkStream = tcpClient.GetStream();
                StreamReader sr = new StreamReader(networkStream);
                //read file length
                int length = int.Parse(sr.ReadLine());
                byte[] buffer = new byte[length];
                networkStream.Read(buffer, 0, (int)length);
                //write to file
                BinaryWriter bWrite = new BinaryWriter(File.Open(strFilePath, FileMode.Create));
                bWrite.Write(buffer);
                bWrite.Flush();
                bWrite.Close();
                tcpClient.Close();
Java app
ServerSocket serverSocket = new ServerSocket(1593);
            System.out.println("Server started and waiting for request..");
            Socket socket = serverSocket.accept();
            System.out.println("Connection accepted from " + socket);
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            File file = new File(strFileToSend);
            // send file length
            out.println(file.length());
            // read file to buffer
            byte[] buffer = new byte[(int) file.length()];
            DataInputStream dis = new DataInputStream(new FileInputStream(file));
            dis.read(buffer, 0, buffer.length);
            // send file
            BufferedOutputStream bos = new BufferedOutputStream(
                    socket.getOutputStream());
            bos.write(buffer);
            bos.flush();
            serverSocket.close();
            System.out.println("File has been send ... ");
The exception raised from the client side
Unable to read data from the transport connection : An existing connection was forcibly closed by the remote host
The server application said it has sent successfully the file. Thanks in advance.