Results 1 to 16 of 16
Thread: readLine() not working.
- 09-20-2011, 01:55 PM #1
Member
- Join Date
- Sep 2011
- Posts
- 14
- Rep Power
- 0
readLine() not working.
Hi All.
I'm building a simple Chat client / server. The Client connects to the server and both write to each other, but no output is displayed by each after the readLine() statement. I'm using Threads.
ChatServer.java:
ChatClient.javaJava Code:/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package chatserver; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Rob */ public class ChatServer implements Runnable { int x[] = new int[4]; int y[] = new int[4]; BufferedReader reader; PrintWriter writer; /** * @param args the command line arguments */ public static void main(String[] args) { ChatServer server = new ChatServer(); server.run(); } public void run() { System.out.println("hello"); connect(); Thread readerThread = new Thread(new IncomingReader()); Thread writerThread = new Thread(new OutgoingWriter()); readerThread.start(); writerThread.start(); } public void connect() { try { ServerSocket serverSock = new ServerSocket(4242); while (true) { Socket sock = serverSock.accept(); writer = new PrintWriter(sock.getOutputStream()); reader = new BufferedReader(new InputStreamReader(sock.getInputStream())); System.out.println("NEtowrking established"); } } catch (IOException ex) { ex.printStackTrace(); } } public class IncomingReader implements Runnable { public void run() { try { String result = reader.readLine(); reader.close(); System.out.println("read " + result); writer.close(); } catch (IOException ex) { ex.printStackTrace(); } } } public class OutgoingWriter implements Runnable { public void run() { writer.println("hello"); System.out.println("Written"); } } }
Java Code:/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package chatclient; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; /** * * @author Rob */ public class ChatClient { BufferedReader reader; PrintWriter writer; Socket sock; /** * @param args the command line arguments */ public static void main(String[] args) { ChatClient client = new ChatClient(); client.SetUpNetworking(); } private void SetUpNetworking() { try { sock = new Socket("127.0.0.1", 4242); InputStreamReader streamReader = new InputStreamReader(sock.getInputStream()); reader = new BufferedReader(streamReader); writer = new PrintWriter(sock.getOutputStream()); System.out.println("Netowrking Established"); Thread readerThread = new Thread(new IncomingReader(reader)); Thread writerThread = new Thread(new OutgoingWriter(writer)); readerThread.start(); writerThread.start(); } catch (Exception ex) { ex.printStackTrace(); } } class IncomingReader implements Runnable{ private BufferedReader reader; public IncomingReader(BufferedReader reader) { this.reader = reader; } public void run() { try { String result = reader.readLine(); reader.close(); System.out.println("read " + result); } catch (IOException ex) { ex.printStackTrace(); } } } public class OutgoingWriter implements Runnable { private PrintWriter writer; public OutgoingWriter(PrintWriter writer) { this.writer = writer; } public void run() { writer.println("hello"); System.out.println("Written"); } } }
- 09-20-2011, 04:07 PM #2
Member
- Join Date
- Sep 2011
- Posts
- 14
- Rep Power
- 0
Re: readLine() not working.
Just realised the thread IncomingReader won't execute, if the OutgoingWriter thread is run before the incomingReader thread it won't execute. No idea as to why.
Thanks in advance.Last edited by space.puffin; 09-20-2011 at 04:09 PM.
- 09-20-2011, 05:22 PM #3
Re: readLine() not working.
You need to add lots more printlns so you can see where the execution flow goes and where it is getting hung.
- 09-20-2011, 05:57 PM #4
Member
- Join Date
- Sep 2011
- Posts
- 14
- Rep Power
- 0
Re: readLine() not working.
Odd.
After the try / catch block of connect() System.out.println won't show.Last edited by space.puffin; 09-20-2011 at 06:04 PM.
- 09-20-2011, 05:57 PM #5
Re: readLine() not working.
Try flushing the writer after writing.
- 09-20-2011, 06:18 PM #6
Member
- Join Date
- Sep 2011
- Posts
- 14
- Rep Power
- 0
Re: readLine() not working.
writer.flush() makes no difference. IncomingReader won't execute.
- 09-20-2011, 06:23 PM #7
Re: readLine() not working.
Remove all the close statements.
- 09-20-2011, 06:34 PM #8
Member
- Join Date
- Sep 2011
- Posts
- 14
- Rep Power
- 0
Re: readLine() not working.
^ tried that already.
- 09-20-2011, 06:43 PM #9
Re: readLine() not working.
Here is what is printed when I execute the code:
Java Code:CS - Starting CC- Netowrking Established CS - Waiting on connnect CC - IR waiting CC - writing CC Written CS - NetWorking established CS back from connect CS - IR waiting CS read hello from CC<<<<<<<<<<<<<<<< CS - sending message CC - read hello from CS>>>>>>>>>>>>>>> CS Written 0 error(s)
- 09-20-2011, 06:54 PM #10
Member
- Join Date
- Sep 2011
- Posts
- 14
- Rep Power
- 0
Re: readLine() not working.
Must be an error in my environment. Have tried compiling and running both classes from the commandline. I have the latest version of the jdk installed.
Last edited by space.puffin; 09-20-2011 at 07:02 PM.
- 09-20-2011, 07:02 PM #11
Re: readLine() not working.
Did you notice these lines in my print out?
CS back from connect
CS - IR waiting
Did you add print statements at those locations in the code?
- 09-20-2011, 07:17 PM #12
Member
- Join Date
- Sep 2011
- Posts
- 14
- Rep Power
- 0
Re: readLine() not working.
Thanks Norm.
I have println statements after connect in ChatServer.main after connect() .and at the start of IR. neither is printed.
- 09-20-2011, 07:19 PM #13
Member
- Join Date
- Sep 2011
- Posts
- 14
- Rep Power
- 0
Re: readLine() not working.
ChatServer.java.
ChatClient.javaJava Code:/* * To change this template, choose Tools | Templates * and open the template in the editor. */ import java.io.BufferedReader; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Rob */ public class ChatServer implements Runnable { int x[] = new int[4]; int y[] = new int[4]; BufferedReader reader; PrintWriter writer; /** * @param args the command line arguments */ public static void main(String[] args) { ChatServer server = new ChatServer(); server.run(); } public void run() { System.out.println("hello"); connect(); System.out.println("going to start thread"); Thread readerThread = new Thread(new IncomingReader()); System.out.println("reader started"); Thread writerThread = new Thread(new OutgoingWriter()); writerThread.start(); readerThread.start(); } public void connect() { try { ServerSocket serverSock = new ServerSocket(4242); while (true) { Socket sock = serverSock.accept(); writer = new PrintWriter(sock.getOutputStream()); reader = new BufferedReader(new InputStreamReader(sock.getInputStream())); System.out.println("NEtowrking established"); } } catch (IOException ex) { ex.printStackTrace(); } System.out.println("connect finished"); } public class IncomingReader implements Runnable { public void run() { System.out.println("this far"); try { String result = reader.readLine(); reader.close(); System.out.println("read " + result); writer.close(); } catch (IOException ex) { ex.printStackTrace(); } } } public class OutgoingWriter implements Runnable { public void run() { try { writer.println("hello"); System.out.println("Written"); Thread.sleep(2000); } catch (Exception ex) { ex.printStackTrace(); } } } }
Output:Java Code:/* * To change this template, choose Tools | Templates * and open the template in the editor. */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; /** * * @author Rob */ public class ChatClient { BufferedReader reader; PrintWriter writer; Socket sock; /** * @param args the command line arguments */ public static void main(String[] args) { ChatClient client = new ChatClient(); client.SetUpNetworking(); } private void SetUpNetworking() { try { sock = new Socket("127.0.0.1", 4242); InputStreamReader streamReader = new InputStreamReader(sock.getInputStream()); reader = new BufferedReader(streamReader); writer = new PrintWriter(sock.getOutputStream()); System.out.println("Netowrking Established"); Thread readerThread = new Thread(new IncomingReader(reader)); Thread writerThread = new Thread(new OutgoingWriter(writer)); readerThread.start(); writerThread.start(); } catch (Exception ex) { ex.printStackTrace(); } } class IncomingReader implements Runnable{ private BufferedReader reader; public IncomingReader(BufferedReader reader) { this.reader = reader; } public void run() { try { String result = reader.readLine(); reader.close(); System.out.println("read " + result); } catch (IOException ex) { ex.printStackTrace(); } } } public class OutgoingWriter implements Runnable { private PrintWriter writer; public OutgoingWriter(PrintWriter writer) { this.writer = writer; } public void run() { writer.println("hello"); writer.flush(); System.out.println("Written"); } } }
ChatServer:
hello
NEtowrking established
ChatClient:
Netowrking Established
Written
- 09-20-2011, 07:22 PM #14
Re: readLine() not working.
That means those statements were never executed.neither is printed.
I think they do need to be executed, so you need to see why they weren't
- 09-20-2011, 07:59 PM #15
Member
- Join Date
- Sep 2011
- Posts
- 14
- Rep Power
- 0
Re: readLine() not working.
Thanks again Norm.
If it runs fine on your machine is it not an environment problem. I've tried running the files on windows and linux to no avail. As for the threads not running i have no idea why they don't.
- 09-20-2011, 08:03 PM #16
Similar Threads
-
Readline from an input stream and nothing more.
By couling in forum Advanced JavaReplies: 19Last Post: 05-27-2011, 09:20 PM -
readLine() for loop
By Billywizz in forum New To JavaReplies: 15Last Post: 04-06-2011, 11:37 AM -
Hi there, and i have little problem with readLine
By Chesh in forum New To JavaReplies: 10Last Post: 01-17-2009, 08:30 PM -
problem with console.readLine()
By thatguy in forum New To JavaReplies: 1Last Post: 12-14-2008, 07:40 PM -
DataInputStream readLine()
By ravian in forum New To JavaReplies: 2Last Post: 11-26-2007, 10:44 PM


LinkBack URL
About LinkBacks
Reply With Quote
Bookmarks