Solved

java read vs readline

Posted on 2009-07-13
2
328 Views
Last Modified: 2013-11-23
First let me admit that I barely know java enough to be dangerous.  

I'd like to modify the code below (in the function run) so that when it receives a message, it prints it to the console, but I don't want it to print a CR LF.

I get some compiler warnings about depreciated functions, so fee free to update the code where it makes sense to do so:

An added bonus would be to make the program exit gracefully if the user hits ctrl-c
import java.io.*;
import java.net.*;
import java.security.*;
 
/**
 * Title:        Sample Server
 * Description:  This utility will accept input from a socket, posting back to the socket before closing the link.
 * It is intended as a template for coders to base servers on. Please report bugs to brad at kieser.net
 * Copyright:    Copyright (c) 2002
 * Company:      Kieser.net
 * @author B. Kieser
 * @version 1.0
 */
 
public class sample_server {
 
  private static int port=12310, maxConnections=0;
  // Listen for incoming connections and handle them
  public static void main(String[] args) {
    int i=0;
 
    try{
      ServerSocket listener = new ServerSocket(port);
      Socket server;
 
      while((i++ < maxConnections) || (maxConnections == 0)){
        doComms connection;
 
        server = listener.accept();
        doComms conn_c= new doComms(server);
        Thread t = new Thread(conn_c);
        t.start();
      }
    } catch (IOException ioe) {
      System.out.println("IOException on socket listen: " + ioe);
      ioe.printStackTrace();
    }
  }
 
}
 
class doComms implements Runnable {
    private Socket server;
    private String line,input;
 
    doComms(Socket server) {
      this.server=server;
    }
 
    public void run () {
 
      input="";
 
      try {
        // Get input from the client
        DataInputStream in = new DataInputStream (server.getInputStream());
        PrintStream out = new PrintStream(server.getOutputStream());
 
        while((line = in.readLine()) != null) {
          input=input + line;
        }
 
        // Now write to the client
 
        System.out.print("> " + input);
 
        server.close();
      } catch (IOException ioe) {
        System.out.println("IOException on socket listen: " + ioe);
        ioe.printStackTrace();
      }
    }
}

Open in new window

0
Comment
Question by:MrGone06095
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 86

Accepted Solution

by:
CEHJ earned 250 total points
ID: 24844590
Try the following:
import java.io.*;
import java.net.*;
import java.security.*;
 
/**
 * Title:        Sample Server
 * Description:  This utility will accept input from a socket, posting back to the socket before closing the link.
 * It is intended as a template for coders to base servers on. Please report bugs to brad at kieser.net
 * Copyright:    Copyright (c) 2002
 * Company:      Kieser.net
 * @author B. Kieser
 * @version 1.0
 */
 
public class sample_server {
 
  private static int port=12310, maxConnections=0;
  // Listen for incoming connections and handle them
  public static void main(String[] args) {
    int i=0;
 
    try{
      ServerSocket listener = new ServerSocket(port);
      Socket server;
 
      while((i++ < maxConnections) || (maxConnections == 0)){
        doComms connection;
 
        server = listener.accept();
        doComms conn_c= new doComms(server);
        Thread t = new Thread(conn_c);
        t.start();
      }
    } catch (IOException ioe) {
      System.out.println("IOException on socket listen: " + ioe);
      ioe.printStackTrace();
    }
  }
 
}
 
class doComms implements Runnable {
    private Socket server;
    private String line,input;
 
    doComms(Socket server) {
      this.server=server;
    }
 
    public void run () {
 
      input="";
 
      try {
        // Get input from the client
        BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));
        PrintWriter out = new PrintWriter(server.getOutputStream(), true);
 
        while((line = in.readLine()) != null) {
          input=input + line;
        }
 
        // Now write to the client
 
        out.println("> " + input);
 
        server.close();
      } catch (IOException ioe) {
        System.out.println("IOException on socket listen: " + ioe);
        ioe.printStackTrace();
      }
    }
}

Open in new window

0
 
LVL 92

Assisted Solution

by:objects
objects earned 250 total points
ID: 24844982
> An added bonus would be to make the program exit gracefully if the user hits ctrl-c

try using a shutdown hook

http://helpdesk.objects.com.au/java/how-can-i-get-some-code-run-when-my-application-shuts-down
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

By the end of 1980s, object oriented programming using languages like C++, Simula69 and ObjectPascal gained momentum. It looked like programmers finally found the perfect language. C++ successfully combined the object oriented principles of Simula w…
In this post we will learn how to make Android Gesture Tutorial and give different functionality whenever a user Touch or Scroll android screen.
This video teaches viewers about errors in exception handling.
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …
Suggested Courses

732 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question