Problem reading string from client
I am having trouble sending the filename before i send the file and storing it to a string on the server. I always stores some gibberish string. Can someone please help
Server code
import java.io.IOException;
import java.net.ServerSocket;
publicclass Server{
/**
* @param args
* @throws IOException
*/
publicstaticvoid main(String[] args)throws IOException{
// TODO Auto-generated method stub
ServerSocket serverSocket =null;
boolean listening =true;
try{
serverSocket =new ServerSocket(12345);
}catch (IOException e){
System.err.println("Could not listen on port: 12345.");
System.exit(-1);
}
while (listening)
new ServerThreads(serverSocket.accept()).start();
serverSocket.close();
}
}
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
publicclass ServerThreadsextends Thread{
publicstaticfinalint BUFFER_SIZE = 1024 * 50;
privatebyte[] buffer;
private Socket socket =null;
public ServerThreads(Socket socket){
// TODO Auto-generated constructor stub
this.socket = socket;
buffer =newbyte[BUFFER_SIZE];
}
publicvoid run(){
try{
String fileName;
System.out.println("accepted Socket");
BufferedReader rd =new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedInputStream in =
new BufferedInputStream(socket.getInputStream());
fileName = rd.readLine();
System.out.println(fileName);
BufferedOutputStream out =
new BufferedOutputStream(new FileOutputStream("Test.Z"));
int len = 0;
while ((len = in.read(buffer)) > 0){
out.write(buffer, 0, len);
System.out.print("#");
}
fileName = rd.readLine();
System.out.println(fileName);
in.close();
out.flush();
out.close();
socket.close();
System.out.println("\nDone!");
}
catch(IOException e){
}
}
}
Client Code:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.PrintWriter;
import java.net.Socket;
publicclass Network{
publicstaticfinalint BUFFER_SIZE = 1024 * 50;
privatebyte[] buffer;
public Network(){
// TODO Auto-generated constructor stub
buffer =newbyte[BUFFER_SIZE];
}
publicvoid startClient()throws Exception{
Socket socket =new Socket("localhost", 12345);
PrintWriter pout =new PrintWriter(socket.getOutputStream(),true);
String fname ="filename";
pout.println(fname);
BufferedInputStream in =
new BufferedInputStream(
new FileInputStream("file.Z"));
BufferedOutputStream out =
new BufferedOutputStream(socket.getOutputStream());
int len = 0;
while ((len = in.read(buffer)) > 0){
out.write(buffer, 0, len);
System.out.print("#");
}
in.close();
out.flush();
out.close();
socket.close();
System.out.println("\nDone!");
}
/**
* @param args
* @throws Exception
*/
publicstaticvoid main(String[] args)throws Exception{
// TODO Auto-generated method stub
Network nw =new Network();
nw.startClient();
}
}

