Presentation is loading. Please wait.

Presentation is loading. Please wait.

Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp Advanced Java Programming CSE 7345/5345/ NTU 531 Multithreaded/Sockets/Server Welcome.

Similar presentations


Presentation on theme: "Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp Advanced Java Programming CSE 7345/5345/ NTU 531 Multithreaded/Sockets/Server Welcome."— Presentation transcript:

1 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp Advanced Java Programming CSE 7345/5345/ NTU 531 Multithreaded/Sockets/Server Welcome Back!!!

2 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp claurent@engr.smu.edu Chantale Laurent-Rice Welcome Back!!! trice75447@aol.com Office Hours: by appt 12:50pm-1:50pm SIC 353

3 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp 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 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp Server Objectives: Use server-side socket communication Understanding multithreading design Use methods of the thread class

5 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp 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 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp class CreateThread extends Thread { CreateThread() { /* Do standard constructor initialization */ start(); } public void run() { /*Do the work this thread was created for */ } }

7 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp 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 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp 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 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp See Java in a nutshell chapter 10 I/O pg. 323

10 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp In class Exercise

11 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp Using Threads to communicate with Socket/Server

12 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp This exercise defines a thread for Applet1 which: listens and processes requests from Server

13 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp Requirements: Client workstations will communicate to the Server by sending a message(s).

14 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp 1.declare the import statements for I/O

15 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp import java.net.*; import java.io.*;

16 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp 2.Define a new Thread class that starts when you create an instance of it.

17 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp Creating a thread public class Applet1Thread extends Thread { }

18 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp 3. Declare the constructor

19 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp public Applet1Thread () { }

20 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp 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 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp Do you want the while(true) read loop inside or outside the run? Why?

22 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp public void run () { try { } catch( ) }

23 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp “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 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp instantiate a ServerSocket Object called ss. open a serverSocket on applet 1

25 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp ServerSocket ss = new ServerSocket (8200);

26 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp 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 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp 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 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp // Fill in the blanks. while(true ) { }

29 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp 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 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp 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 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp /* accept connection from server 2 */ Socket serverSocket2 = ss.accept ();

32 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp /* Print something if works */

33 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp System.out.println ("connection from server 2 accepted");

34 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp 9.Once the Server has been created, instantiate to read and write from the Socket.

35 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp BufferedReader inServer2 = new BufferedReader (new InputStreamReader (serverSocket2.getInputStream () ) ); PrintWriter outServer2 = new PrintWriter(serverSocket2.getOutputStream (), true );

36 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp /* get keywords from server 2 */

37 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp String keywords = inServer2.readLine ();

38 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp perform the search for server 2 by calling the RString.getSearchData used by applet1

39 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp String results = RString.getSearchData(keywords);

40 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp /* send search results to server 2 */

41 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp outServer2.println (results);

42 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp Now it’s time for the catch write the catch structure

43 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp catch (Exception e) { // Print a message }

44 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp catch (Exception e) { System.out.println (e.getMessage()); }

45 Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp End


Download ppt "Liang, Oreilly, Herbert Schildt, Joseph O’Neil, Simon Roberts, IBM Corp Advanced Java Programming CSE 7345/5345/ NTU 531 Multithreaded/Sockets/Server Welcome."

Similar presentations


Ads by Google