Re: Need Desperate Help...Java Sockets
From: Stephan Wehner (google_at_conxns.net)
Date: 03/09/04
- Next message: Tony Morris: "Re: 'this' <--- Problem with THAT!"
- Previous message: John Raggio: "Refreshing / Reloading an applet - Static Values"
- In reply to: JatP: "Need Desperate Help...Java Sockets"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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
- Next message: Tony Morris: "Re: 'this' <--- Problem with THAT!"
- Previous message: John Raggio: "Refreshing / Reloading an applet - Static Values"
- In reply to: JatP: "Need Desperate Help...Java Sockets"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|