Re: Need Desperate Help...Java Sockets

From: Stephan Wehner (google_at_conxns.net)
Date: 03/09/04


Date: 9 Mar 2004 14:05:15 -0800

Did you look at the line separator on client and server side?
The documentation of PrintWriter says

 * The println() methods
 * use the platform's own notion of line separator rather than the newline
 * character.

See also the private void newLine() method in PrintWriter.

Stephan

__________________________________________
Stephan Wehner
Editor, Traffic Life: Passionate Tales and Exit Strategies
An anthology about our car culture and alternatives with
short stories, poems, cartoons and lots of other art
www.trafficlife.com

vicky235ca@yahoo.com (JatP) wrote in message news:<8e875047.0403071616.28ca75ea@posting.google.com>...
> hi Everyone
> I am trying to create a server and client to send files from one side
> to the other. I can send files from one side to the other using
> bufferedinput/output streams but when trying to send normal messages
> with printwriter my files being sent across are messed up. Empty jpg's
> are being sent with wrong file sizes. My code as follows:
>
>
> public class TCPServer
> {
> public static final int BUFFER_SIZE = 4096;
> public static final int RCV_PORT = 45000;
>
> public static void main(String[] args)
> {
> ServerSocket server;
> Socket socket;
> File file;
> PrintWriter out;
> BufferedReader in;
> String line;
>
> file = new File("C:Project");
>
> try
> {
> server = new ServerSocket(RCV_PORT);
> socket = server.accept();
>
> OutputStream os = socket.getOutputStream();
> InputStream is = socket.getInputStream();
> out = new PrintWriter(os,true);
> in = new BufferedReader(new InputStreamReader(is));
>
> out.println("OK"); //WHEN I HAVE THIS LINE MY FILE BEING SEND IT
> MESSED UP. BUT WITHOUT THIS THE FILE IS SENT PERFECTLY
>
>
> SendFile(file, "test.JPG", os);
> out.close();
> in.close();
> socket.close();
> } catch (IOException e) { }
>
> }
>
> static void SendFile(File file, String filename, OutputStream os)
> {
> try
> {
> byte[] buffer = new byte[BUFFER_SIZE];
> int count;
> File nfile = new File(file,filename);
> FileInputStream Fis = new FileInputStream(nfile);
> BufferedInputStream ins = new BufferedInputStream(Fis);
> BufferedOutputStream outs = new BufferedOutputStream(os);
> while(true)
> {
> count = ins.read(buffer, 0, BUFFER_SIZE);
> if (count <= 0)
> break;
> outs.write(buffer, 0, count);
> System.out.println(buffer);
> }
> outs.flush();
> outs.close();
> ins.close();
> } catch (IOException e) {System.out.println(e);}
> }
>
> }
>
> CLIENT
> ---------
>
> public class TCPClient
> {
> public static final int BUFFER_SIZE = 4096;
> public static final String FILE_NAME = "WORK.jpg";
> public static void main(String[] args)
> {
> int port;
> String addr;
> try
> {
> Socket socket = new Socket(addr,port);
> OutputStream os = socket.getOutputStream();
> InputStream is = socket.getInputStream();
> PrintWriter out = new PrintWriter(os, true);
> BufferedReader in = new BufferedReader(new InputStreamReader(is));
>
> String line = in.readLine(); //WHEN I HAVE THIS CODE ON THE CLIENT
> SIDE
> if (line.compareTo("OK")!=0) //WITH RESPECT TO WHAT I HAVE ON THE
> SERVER SIDE
> return; //THE FILE BEING RECEIVED IS MESSED UP, OTHERWISE IS PERFECTLY
> RECEIVED
>
> RcvFile(is);
>
> out.close();
> in.close();
> socket.close();
> } catch (IOException e) { }
>
> }
>
> static void RcvFile(InputStream is)
> {
> try
> {
> BufferedInputStream ins = new BufferedInputStream(is);
> BufferedOutputStream outs = new BufferedOutputStream(new
> FileOutputStream(FILE_NAME));
> byte[] buffer = new byte[BUFFER_SIZE];
>
> while(true)
> {
> int count = ins.read(buffer, 0, BUFFER_SIZE);
> if (count <= 0)
> {
> break;
> }
> outs.write(buffer, 0, count);
> System.out.println(buffer);
> }
> outs.flush();
> ins.close();
> outs.close();
> }
> catch(IOException e) {}
> }
>
> }
>
>
>
>
> Please let me know what i am doing wrong. From all the playing around
> i have done it seems that once i bind and send anything via the
> printwriter the Bufferedinputstream doesn't work properly.
>
> Thanks a million
>
> JatP



Relevant Pages

  • Re: Need Desperate Help...Java Sockets
    ... Did you look at the line separator on client and server side? ... See also the private void newLinemethod in PrintWriter. ... > bufferedinput/output streams but when trying to send normal messages ...
    (comp.lang.java)
  • Streams
    ... Can i use the following constructions in a server and client without being ... BufferedReader in = new BufferedReader( ... PrintWriter pout = new PrintWriter ...
    (comp.lang.java.help)
  • PrintWriter ..Exception
    ... I have written one java server with the following code.. ... public void run// one thread for each client ... PrintWriter target_pw; ... Here, 90 % of the time,Exception is being raised when i am attempting ...
    (de.comp.lang.java)
  • Re: What doesnt lend itself to OO?
    ... >> proxy and instructs the server to constuct the real object. ... rather than client code. ... If 'clock' is instantiated in the server, ... > for the server interface at the OOA level. ...
    (comp.object)
  • This is going straight to the pool room
    ... or not the client has privilege to do what they're trying to do, ... The server environment is this: ... 3GL User action Routines that Tier3 will execute on your behalf during the ... Routine Name: USER_INIT ...
    (comp.os.vms)