Reputation: 175
I have a client that sends a file to the server and sends other values to the server.I managed to transfer the file but it is not opened until i close the socket.So i made another socket in the client side just for sending the file,but the server read it as if it is another client and incremented the clients number and gave me an exception as well saying> Socketexception:software caused connection abort: socket write error.Here is the code of client side with a new socket just for the sending,Can anyone help me about that?Thanks in advance.
try
{
Socket sendSock=new Socket("localhost", 8080);
outC.println("AcceptFile,");
FileInputStream fis = new FileInputStream(p);
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
ObjectOutputStream oos = new ObjectOutputStream(sendSock.getOutputStream()) ;
oos.writeObject(buffer);
sendSock.close();
}
catch(Exception c)
{
System.err.println("exc" + c);
}
Upvotes: 2
Views: 1483
Reputation: 82559
tl;dr - Don't make a new socket. Just wrap the output stream and send the objects over.
Assuming outC is also a connection to your server, do this
outC.println("AcceptFile,");
FileInputStream fis = new FileInputStream(p);
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
ObjectOutputStream oos = new ObjectOutputStream(originalSocket.getOutputStream());
oos.writeObject(buffer);
This will write an object to the underlying stream.
Now on the server side, you can do this
if(clientMessage.equals("AcceptFile,")) {
ObjectInputStream ois = new ObjectInputStream(clientSocket.getInputStream());
byte[] buffer = (byte[])ois.readObject();
// do what you will with that
}
Upvotes: 1
Reputation: 9075
The problem in supporting multiple connections is on the server side. I don't see how you are going to solve that server behavior from the client side. It doesn't support multiple connections in one session.
Upvotes: 0