1 / 45

Advanced Java Programming CSE 7345/5345/ NTU 531

Welcome Back!!!. Advanced Java Programming CSE 7345/5345/ NTU 531. Multithreaded/Sockets/Server. Office Hours: by appt 12:50pm-1:50pm SIC 353. Chantale Laurent-Rice. Welcome Back!!!. trice75447@aol.com. claurent@engr.smu.edu. News.

amandla
Télécharger la présentation

Advanced Java Programming CSE 7345/5345/ NTU 531

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Welcome Back!!! Advanced Java ProgrammingCSE 7345/5345/ NTU 531 Multithreaded/Sockets/Server

  2. Office Hours: by appt 12:50pm-1:50pm SIC 353 Chantale Laurent-Rice Welcome Back!!! trice75447@aol.com claurent@engr.smu.edu

  3. News • Dr. El-Rewini is looking for someone with Java Swing background. • See Dr. El-Rewini or call Beth at SIC for more info

  4. Server Objectives: Use server-side socket communication Understanding multithreading design Use methods of the thread class

  5. Threads • There are two ways to create new Threads. • One is to declare a class to be a subclass of Thread, This subclass should override the run method of class Thread, and you can then allocate and start an instance of that class.

  6. class CreateThread extends Thread{ CreateThread() { /* Do standard constructor initialization */ start(); } public void run() { /*Do the work this thread was created for */ }}

  7. The other way to create a thread is to declare a class that implements Runnable interface. That class then implements the run method. An instance of the class can then be allocated (passed as an argument when you’ve creating a thread object).

  8. class CreateThread implements Runnable{ Thread thread; CreateThread() {/* Do standard constructor initialization */thread = new Thread(this. “second”);thread.start(); } public void run() { /*Do the work this thread was created for */ }}

  9. See Java in a nutshell chapter 10I/Opg. 323

  10. In class Exercise

  11. Using Threads to communicate with Socket/Server

  12. This exercise defines a thread for Applet1 which: listens and processes requests from Server

  13. Requirements:Client workstations will communicate to the Server by sending a message(s).

  14. declare the import statements for I/O

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

  16. 2. Define a new Thread class that starts when you create an instance of it.

  17. Creating a thread public class Applet1Thread extends Thread { }

  18. 3. Declare the constructor

  19. public Applet1Thread () { }

  20. 4. Take a shot at coding the run() method. Since we are using I/O, the compiler will insist that a try/catch structure.

  21. Do you want the while(true) read loop inside or outside the run? Why?

  22. public void run () { try { } catch( ) }

  23. “answer the phone” 6. The The “answer the phone” function in Java Socket servers is provided by the ServerSocket class, so instantiate a ServerSocket Object called ss. Designate port 8200 on the ServerSocket constructor, the port number to be called by the Clients.

  24. instantiate a ServerSocket Object called ss.open a serverSocket on applet 1

  25. ServerSocket ss = new ServerSocket (8200);

  26. Since we are calling I/O methods, we will have to catch exceptions. Put the try/catch structure inside the while(true loop), and in the catch block print the Exception object but do not terminate.

  27. If a client Socket fails during the join processing, we will simply print an error message and then ignore that Client looping back to the top of the while(true) to accept() the next Client that calls.

  28. // Fill in the blanks. while(true ) { }

  29. 7. Now the Server can go into a while(true) loop where it answers the phone when a Client calls Parses the Clients’ first message (the joinrequest) Makes arrangements for continuing communication with the Client Returns to the top of the loop to process the next Client that calls.

  30. 8. At the top of the while(true) loop, enter the accept() method of the ServerSocket object. The Server thread will wait here until a Client calls. When a connection is made, the accept() method returns the reference to the Socket it has instantiated for this Client.

  31. /* accept connection from server 2 */ Socket serverSocket2 = ss.accept ();

  32. /* Print something if works */

  33. System.out.println ("connection from server 2 accepted");

  34. 9. Once the Server has been created, instantiate to read and write from the Socket.

  35. BufferedReader inServer2 = new BufferedReader (new InputStreamReader (serverSocket2.getInputStream () ) );PrintWriter outServer2 = new PrintWriter(serverSocket2.getOutputStream (), true );

  36. /* get keywords from server 2 */

  37. String keywords = inServer2.readLine ();

  38. perform the search for server 2 by calling the RString.getSearchData used by applet1

  39. String results = RString.getSearchData(keywords);

  40. /* send search results to server 2 */

  41. outServer2.println (results);

  42. Now it’s time for the catch write the catch structure

  43. catch (Exception e) { // Print a message }

  44. catch (Exception e) { System.out.println (e.getMessage()); }

  45. End

More Related