Question

The DictionaryClient program featured in the class lecture also used the try-catch when creating a socket....

The DictionaryClient program featured in the class lecture also used the try-catch when creating a socket. Socket are auto-closeable and thus can use a try-with-resources instead. Edit the dictionary program to use try-with-resources instead.

package MySockets;

import java.net.*;
import java.io.*;

public class DictionaryClient {
  
   private static final String SERVER = "dict.org";
   private static final int PORT = 2628;
   private static final int TIMEOUT = 15000;

   public static void main(String[] args) {

       Socket    socket = null;
      
       try {
           socket = new Socket(SERVER, PORT);
           socket.setSoTimeout(TIMEOUT);

           System.out.print("Connected to Host : ");
           System.out.print(socket.getInetAddress() + " Port: ");
           System.out.println(socket.getPort());
           System.out.print("Connected from Host:" );
           System.out.print(socket.getLocalAddress() + " Port: ");
           System.out.println(socket.getLocalPort());
          
           InputStream in = socket.getInputStream();
           BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
          
           OutputStream out = socket.getOutputStream();
           Writer writer = new OutputStreamWriter(out, "UTF-8");
           writer = new BufferedWriter(writer);
          
           define(args[0], writer, reader);

       } catch (IOException ex) {
           System.err.println(ex);
       } finally {
           if(socket != null) {
               try {
                   socket.close();
               } catch(IOException e) {
                   System.out.println(e);
               }
           }              
       }
   }
  
   static void define(String word,
                   Writer writer,
                   BufferedReader reader) throws IOException {
       writer.write("SHOW DB\r\n");
       writer.write("DEFINE fd-eng-lat " + word + "\r\n");
       writer.flush();
      
       for(String line = reader.readLine(); line != null; line = reader.readLine()) {
           System.out.println(line);
           if(line.startsWith("250 ")) {
               writer.write("quit\r\n");
               writer.flush();
           }
       }
       return;
   }
}

0 0
Add a comment Improve this question Transcribed image text
Answer #1

Please find the answer below:

I have highlighted the changed part of the program.

package MySockets;

import java.net.*;
import java.io.*;

public class DictionaryClient {

    private static final String SERVER = "dict.org";
    private static final int PORT = 2628;
    private static final int TIMEOUT = 15000;

    public static void main(String[] args) {

        //no need of this line as we will use the tr with resource
        //Socket socket = null;

        //object is created using tr with resources and it implements the auto closeable so no need of the finally method
        try(Socket socket = new Socket(SERVER, PORT)) {
            socket.setSoTimeout(TIMEOUT);

            System.out.print("Connected to Host : ");
            System.out.print(socket.getInetAddress() + " Port: ");
            System.out.println(socket.getPort());
            System.out.print("Connected from Host:" );
            System.out.print(socket.getLocalAddress() + " Port: ");
            System.out.println(socket.getLocalPort());

            InputStream in = socket.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));

            OutputStream out = socket.getOutputStream();
            Writer writer = new OutputStreamWriter(out, "UTF-8");
            writer = new BufferedWriter(writer);

            define(args[0], writer, reader);

        } catch (IOException ex) {
            System.err.println(ex);
        }
        //fnally block is not required to close the socket
        /*
        finally{
            if(socket != null) {
               try {
                   socket.close();
               } catch(IOException e) {
                   System.out.println(e);
               }
           }        
        }
        */
      
    }

    static void define(String word,
                       Writer writer,
                       BufferedReader reader) throws IOException {
        writer.write("SHOW DB\r\n");
        writer.write("DEFINE fd-eng-lat " + word + "\r\n");
        writer.flush();

        for(String line = reader.readLine(); line != null; line = reader.readLine()) {
            System.out.println(line);
            if(line.startsWith("250 ")) {
                writer.write("quit\r\n");
                writer.flush();
            }
        }
        return;
    }
}


Add a comment
Answer #2
/**
 * Please find the updated solution with try with resources
 * I have bolded the required part and removed finally block
 */

package MySockets;

import java.net.*;
import java.io.*;

public class DictionaryClient {

    private static final String SERVER = "dict.org";
    private static final int PORT = 2628;
    private static final int TIMEOUT = 15000;

    public static void main(String[] args) {


        try (Socket socket = new Socket(SERVER, PORT)) {
            socket.setSoTimeout(TIMEOUT);

            System.out.print("Connected to Host : ");
            System.out.print(socket.getInetAddress() + " Port: ");
            System.out.println(socket.getPort());
            System.out.print("Connected from Host:");
            System.out.print(socket.getLocalAddress() + " Port: ");
            System.out.println(socket.getLocalPort());

            InputStream in = socket.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));

            OutputStream out = socket.getOutputStream();
            Writer writer = new OutputStreamWriter(out, "UTF-8");
            writer = new BufferedWriter(writer);

            define(args[0], writer, reader);

        } catch (IOException ex) {
            System.err.println(ex);
        }
// Removed finally block from here, it will be handled by we use try with resources

    }

    static void define(String word,
                       Writer writer,
                       BufferedReader reader) throws IOException {
        writer.write("SHOW DB\r\n");
        writer.write("DEFINE fd-eng-lat " + word + "\r\n");
        writer.flush();

        for (String line = reader.readLine(); line != null; line = reader.readLine()) {
            System.out.println(line);
            if (line.startsWith("250 ")) {
                writer.write("quit\r\n");
                writer.flush();
            }
        }
        return;
    }
}
Add a comment
Know the answer?
Add Answer to:
The DictionaryClient program featured in the class lecture also used the try-catch when creating a socket....
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  • Using java socket programming rewrite the following program to handle multiple clients simultaneously (multi threaded programming)...

    Using java socket programming rewrite the following program to handle multiple clients simultaneously (multi threaded programming) import java.io.*; import java.net.*; public class WelcomeClient { public static void main(String[] args) throws IOException {    if (args.length != 2) { System.err.println( "Usage: java EchoClient <host name> <port number>"); System.exit(1); } String hostName = args[0]; int portNumber = Integer.parseInt(args[1]); try ( Socket kkSocket = new Socket(hostName, portNumber); PrintWriter out = new PrintWriter(kkSocket.getOutputStream(), true); BufferedReader in = new BufferedReader( new InputStreamReader(kkSocket.getInputStream())); ) { BufferedReader...

  • In java write a simple 1-room chat server that is compatible with the given client code.

    In java write a simple 1-room chat server that is compatible with the given client code. 9 public class Client private static String addr; private static int port; private static String username; 14 private static iter> currenthriter new AtomicReference>(null); public static void main(String[] args) throws Exception [ addr -args[]; port Integer.parseInt (args[1]); username-args[21 Thread keyboardHandler new Thread(Main: handlekeyboardInput); 18 19 while (true) [ try (Socket socket -new Socket (addr, port) println(" CONNECTED!; Printwriter writer new Printwriter(socket.getoutputStreamO); writer.println(username); writer.flush); currenthriter.set(writer); BufferedReader...

  • I need help with my IM (instant messaging) java program, I created the Server, Client, and...

    I need help with my IM (instant messaging) java program, I created the Server, Client, and Message class. I somehow can't get both the server and client to message to each other. I am at a roadblock. Here is the question below. Create an IM (instant messaging) java program so that client and server communicate via serialized objects (e.g. of type Message). Each Message object encapsulates the name of the sender and the response typed by the sender. You may...

  • I need help with adding comments to my code and I need a uml diagram for...

    I need help with adding comments to my code and I need a uml diagram for it. PLs help.... Zipcodeproject.java package zipcodesproject; import java.util.Scanner; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Zipcodesproject { /** * @param args the command line arguments */ public static void main(String[] args) { Scanner input=new Scanner(System.in); BufferedReader reader; int code; String state,town; ziplist listOFCodes=new ziplist(); try { reader = new BufferedReader(new FileReader("C:UsersJayDesktopzipcodes.txt")); String line = reader.readLine(); while (line != null) { code=Integer.parseInt(line); line =...

  • Please help me fix my errors. I would like to read and write the text file...

    Please help me fix my errors. I would like to read and write the text file in java. my function part do not have errors. below is my code import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.FileWriter; import java.io.IOException; public class LinkedList {    Node head;    class Node    {        int data;        Node next;       Node(int d)        {            data = d;            next = null;        }    }    void printMiddle()    {        Node slow_ptr...

  • Java Project Draw a class diagram for the below class (using UML notation) import java.io.BufferedReader; import...

    Java Project Draw a class diagram for the below class (using UML notation) import java.io.BufferedReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; public class myData { public static void main(String[] args) { String str; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Enter text (‘stop’ to quit)."); try (FileWriter fw = new FileWriter("test.txt")) { do { System.out.print(": "); str = br.readLine(); if (str.compareTo("stop") == 0) break; str = str + "\r\n"; // add newline fw.write(str); } while (str.compareTo("stop") != 0); } catch (IOException...

  • Java only. Thanks These questions involve choosing the right abstraction (Collection, Set, List, Queue, Deque, SortedSet,...

    Java only. Thanks These questions involve choosing the right abstraction (Collection, Set, List, Queue, Deque, SortedSet, Map, or SortedMap) to EFFICIENTLY accomplish the task at hand. The best way to do these is to read the question and then think about what type of Collection is best to use to solve it. There are only a few lines of code you need to write to solve each of them. Unless specified otherwise, sorted order refers to the natural sorted order...

  • How to solve this problem by using reverse String and Binary search? Read the input one...

    How to solve this problem by using reverse String and Binary search? Read the input one line at a time and output the current line if and only if it is not a suffix of some previous line. For example, if the some line is "0xdeadbeef" and some subsequent line is "beef", then the subsequent line should not be output. import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.TreeSet;...

  • I have to modify a server program and chat program to work as the following instructions...

    I have to modify a server program and chat program to work as the following instructions but I am completely clueless as to where to start. I'd appreciate any help on how to atleast get started. This must be done in java. Diffie-Hellman Two parties use a key agreement protocol to generate identical secret keys for encryption without ever having to transmit the secret key. The protocol works by both parties agreeing on a set of values (a) and (q)....

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT