View Single Post
  #1 (permalink)  
Old 08-09-2007, 03:00 AM
spasavvas spasavvas is offline
Member
 
Join Date: Aug 2007
Posts: 2
spasavvas is on a distinguished road
send file via client - server model
Itry to send a file from client to server.
I do it, but when the server receive the file send an ack msg, then the client give error:
java.net.SocketException: socket closed
i don't know why.
my code is

client:
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", 9632);
System.out.println("i am client & connect");
inm = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
outm = new PrintWriter(clientSocket.getOutputStream(), true);
System.out.println("------1--------" +clientSocket.isClosed());
outm.println("msg 1: hi");
System.out.println("from server__ " +inm.readLine());
outm.println("msg 2: now i will send you a file");
System.out.println("from server__ " +inm.readLine());
sendFile();
System.out.println("-------2-------" +clientSocket.isClosed());
System.out.println("from server__ " +inm.readLine());
System.out.println("-------3------nothing-" );
}
catch(IOException e){
e.printStackTrace();
}
}
public void sendFile(){
try{
bis = new BufferedInputStream(new FileInputStream("encryptAtmMsg.txt"));
bos = new BufferedOutputStream(clientSocket.getOutputStream( ));
byteArray = new byte[8192];
while ((in = bis.read(byteArray)) != -1){
bos.write(byteArray,0,in);
}
bis.close();
bos.close();
}
catch(IOException e){
e.printStackTrace();
}
}
public static void main(String[] args){
new Client();
}
}

server:
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(9632);
System.out.println("i am server & listening...");
socket = serverSocket.accept();
System.out.println("a client connect");
System.out.println("------1--------" +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("------2--------" +socket.isClosed());
outm.println("ack 3: take the file");
}
catch (IOException e){
e.printStackTrace();
}
}

public void receiveFile(){
try{
byte[] receivedData = new byte[8192];
bis = new BufferedInputStream(socket.getInputStream());
bos = new BufferedOutputStream(new FileOutputStream("encryptAtmMsg22.txt"));
while ((in = bis.read(receivedData)) != -1){
bos.write(receivedData,0,in);
}
bos.close();
}
catch (IOException e){
e.printStackTrace();
}
}
public static void main(String[] args){
new Server();
}
}

any idea pls
Reply With Quote
Sponsored Links