The ServerSocket Class ใช้ในการจัดทำเครื่องที่เป็นการบริการ ใช้ในการจัดทำเครื่องที่เป็นการบริการ โดยจะมี ช่วงชีวิตดังนี้ โดยจะมี ช่วงชีวิตดังนี้

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างโปรแกรมภาษา JAVA
Advertisements

Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language.
The InetAddress Class.
การจัดการความผิดพลาด
File.
Network programming Asst. Prof. Dr. Choopan Rattanapoka
Network programming Asst. Prof. Dr. Choopan Rattanapoka
Network programming Asst. Prof. Dr. Choopan Rattanapoka
Network programming Asst. Prof. Dr. Choopan Rattanapoka
Network programming Asst. Prof. Dr. Choopan Rattanapoka
การสืบทอด (Inheritance)
LOGO Array. ประเภทของ Array - อาเรย์ 1 มิติ (One) - อาเรย์ 2 มิติ (Two) - อาเรย์ 3 มิติ (Three) 2.
WEEK#16: Method เมธอดคือกลุ่มคําสั่งที่ถูกกําหนดขึ้นเพื่อทำงาน อย่างใดอย่างหนึ่งเพื่อให้ได้ผลลัพธ์ตาม ต้องการ การประกาศเมธอด มีรูปแบบดังนี้ [modifier]
คลาสและวัตถุ (2) (Class & Object)
 เป็นเมธอดที่มีคุณลักษณะของ Polymorphism รูปแบบหนึ่ง โดยใช้ชื่อเมธอดเดียวกัน มากกว่า 1 เมธอด เพื่อทำงานในแบบเดียวกัน  คลาสลูกสามารถเขียนทับ เมธอดของคลาสแม่ได้
คลาสและวัตถุ (3) (Class & Object)
 เป็นเมธอดที่มีคุณลักษณะของ Polymorphism รูปแบบหนึ่ง โดยใช้ชื่อเมธอดเดียวกัน มากกว่า 1 เมธอด เพื่อทำงานในแบบเดียวกัน  คลาสลูกสามารถเขียนทับ เมธอดของคลาสแม่ได้
คลาสและวัตถุ (2) (Class & Object)
คลาสและวัตถุ (3) (Class & Object). w5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 24, 25 as5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 23 2.
ทบทวนเรื่อง GUI - กลุ่มคำสั่ง AWT Set (Abstract Windowing Toolkit) และ
บทที่ 4 Method (1).
File I/O (1) โปรแกรมจะอ่านหรือเขียนข้อมูลผ่านท่อส่งข้อมูล (Stream)
String Class มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
อาร์เรย์ หรือแถวลำดับ (Array)
input from keyboard มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 15 มิถุนายน 2550 Structure Programming มหาวิทยาลัยเนชั่น.
Algorithm มหาวิทยาลัยเนชั่น Java Pre-Test 49 (Series 1, 2 )
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 6 มิถุนายน 2556 Exception มหาวิทยาลัยเนชั่น
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 3 มิถุนายน 2550 Method of Class มหาวิทยาลัยเนชั่น.
Page: 1 โครงสร้างคอมพิวเตอร์ และภาษาแอสเซมบลี้ ผศ. บุรินทร์ รุจจน พันธุ์.. ปรับปรุง 19 ตุลาคม 2555 Introduction to Batch.
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 7 มิถุนายน 2556 Text File Processing มหาวิทยาลัยเนชั่น.
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 22 มิถุนายน 2550 ความผิดพลาดที่พบ บ่อย มหาวิทยาลัยเนชั่น.
ทำงานกับ File และStream
JAVA PROGRAMMING PART IV.
การติดต่อกับฐานข้อมูล(MySQL)
Handling Exceptions & database
โครงสร้างควบคุมการทำงาน
ครั้งที่ 3.
คำสั่งควบคุมการ ทำงาน การเขียนโปรแกรมโดยปกติ มีทั้งให้ทำงาน เป็นลำดับ ที่ละคำสั่ง บางครั้งมีการให้เปลี่ยน ลำดับในการทำคำสั่ง เพื่อให้การเขียน โปรแกรมมีประสิทธิภาพสูงสุด.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language.
Java Programming Language สาขาวิชาระบบสารสนเทศ คณะบริหารธุรกิจ มหาวิทยาลัยเทคโนโลยีราชมงคลกรุงเทพ.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language.
Thread
URLs URL class  ใช้รับข้อมูลจากระบบเครือข่าย  ไม่จำเป็นต้องสนใจรายละเอียดภายใน  ต้อง import java.net.URL  ถ้าเกิดข้อผิดพลาดจะ thows.
Thread Thread ส่วนของ process ที่ให้ CPU ประมวลผล.
ความสัมพันธ์ระหว่างคลาส (Class Relationship)
Object Oriented Programming Handling Exceptions
Method of Class อ.สุพจน์ สิงหัษฐิต
การเขียนโปรแกรม JAVA ขั้นพื้นฐาน
Nattapong Songneam BankAccount – Example Nattapong Songneam
Advanced Class Design in Java Java Packages Week #6 Jarungjit Parnjai
Object-Oriented Programming with Java Burapha University, 2001 Java Exceptions Week #9 Jarungjit Parnjai.
Lecture 7 Java Exceptions. Errors  Compile-time Errors  เกิดขึ้นระหว่าง compile ตรวจสอบได้ด้วย Compiler  เช่น ผิดหลักไวยากรณ์  Run-time Error  เกิดขึ้นระหว่างประมวลผล.
บทที่ 3 Class and Object (2).
บทที่ 2 การแสดงผลและรับข้อมูล
บทที่ 4 คำสั่งควบคุมแบบมีทางเลือก
บทที่ 5 คำสั่งควบคุม แบบวนซ้ำ รายวิชา ง การเขียนโปรแกรมเชิง วัตถุ Reading: ใบความรู้ บทที่ 5.
Java collection framework
Java Network Programming 1
TECH30201 Object-Oriented Programming
เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป
การจัดการกับความผิดปกติ
Java Network Programming – Network Operating Systems and Protocols Choopan Rattanapoka.
การเขียนโปรแกรมบนมาตรฐานเปิด โครงสร้างโปรแกรม public class HelloWorld { public static void main(String[] args) { System.out.println(“Hello World”);
C# Communication
Chapter 5 การจัดการข้อผิดพลาด (Exception Handling)
เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป
Network programming Asst. Prof. Dr. Choopan Rattanapoka
Inheritance Chapter 07.
Overload Method and Poly Morphism
ใบสำเนางานนำเสนอ:

The ServerSocket Class

ใช้ในการจัดทำเครื่องที่เป็นการบริการ ใช้ในการจัดทำเครื่องที่เป็นการบริการ โดยจะมี ช่วงชีวิตดังนี้ โดยจะมี ช่วงชีวิตดังนี้ 1. สร้าง object ServerSocket 2. รอรับการเชื่อมต่อกับเครื่อง client accept( ) 3. สร้าง Stream รับส่งข้อมูลโดยใช้ getInputStream() method, getOutputStream( ) 4. รับส่งข้อมูลระหว่าง Client กับ Server 5. Server และ Client ทำการปิดการเชื่อมต่อ close the connection. 6. กลับไป ขั้นตอนที่ 2 รอการเชื่อมต่อใหม่

The Constructors public ServerSocket(int port) throws BindException, IOException public ServerSocket(int port) throws BindException, IOException public ServerSocket(int port, int queueLength) public ServerSocket(int port, int queueLength) throws BindException, IOException throws BindException, IOException public ServerSocket(int port, int queueLength, InetAddress bindAddress) public ServerSocket(int port, int queueLength, InetAddress bindAddress) throws IOException throws IOException public ServerSocket( ) throws IOException // Java 1.4 public ServerSocket( ) throws IOException // Java 1.4

public ServerSocket(int port) throws BindException, IOException try { try { ServerSocket httpd = new ServerSocket(80); ServerSocket httpd = new ServerSocket(80); } catch (IOException ex) { catch (IOException ex) { System.err.println(ex); System.err.println(ex); }

import java.net.*; import java.net.*; import java.io.*; import java.io.*; class localPortScanner { class localPortScanner { public static void main(String[] args) { public static void main(String[] args) { for (int port = 1; port <= 65535; port++) { for (int port = 1; port <= 65535; port++) { try { try { // the next line will fail and drop into the catch block if // the next line will fail and drop into the catch block if // there is already a server running on the port // there is already a server running on the port ServerSocket server = new ServerSocket(port); ServerSocket server = new ServerSocket(port); } } catch (IOException ex) { catch (IOException ex) { System.out.println("There is a server on port " + port + "."); System.out.println("There is a server on port " + port + "."); } // end catch } // end catch } // end for } // end for } } }

There is a server on port 135. There is a server on port 135. There is a server on port There is a server on port There is a server on port There is a server on port There is a server on port There is a server on port There is a server on port There is a server on port 1028.

Accepting and Closing Connections ในการทำงานของ server จะมีการรอรับการ ติดต่อกับ เครื่อง Client โดยที่ ใช้ accept( ) method ซึ่งจะคืนค่าของ Object ของ Socket คืนมาให้ เป็นการเริ่มการเชื่อมต่อ ในการทำงานของ server จะมีการรอรับการ ติดต่อกับ เครื่อง Client โดยที่ ใช้ accept( ) method ซึ่งจะคืนค่าของ Object ของ Socket คืนมาให้ เป็นการเริ่มการเชื่อมต่อ เมื่อทำการเชื่อมต่อแล้วต้องการยกเลิกการ ติดต่อ ต้องใช้ Method Close() เมื่อทำการเชื่อมต่อแล้วต้องการยกเลิกการ ติดต่อ ต้องใช้ Method Close()

ServerSocket server = new ServerSocket(5776); ServerSocket server = new ServerSocket(5776); while (true) { while (true) { Socket connection = server.accept( ); Socket connection = server.accept( ); OutputStreamWriter out OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream( )); = new OutputStreamWriter(connection.getOutputStream( )); out.write("You've connected to this server. Bye-bye now.\r\n"); out.write("You've connected to this server. Bye-bye now.\r\n"); connection.close( ); connection.close( ); }

SO_TIMEOUT public void setSoTimeout(int timeout) throws SocketException public void setSoTimeout(int timeout) throws SocketException public int getSoTimeout( ) throws IOException public int getSoTimeout( ) throws IOException

SO_TIMEOUT try try { { ServerSocket server = new ServerSocket(2048); server.setSoTimeout(30000); // block for no more than 30 seconds ServerSocket server = new ServerSocket(2048); server.setSoTimeout(30000); // block for no more than 30 seconds try { try { Socket s = server.accept( ); Socket s = server.accept( ); // handle the connection // handle the connection } } catch (InterruptedIOException ex) { catch (InterruptedIOException ex) { System.err.println("No connection within 30 seconds"); System.err.println("No connection within 30 seconds"); } } finally { finally { server.close( ); server.close( ); } } catch (IOException ex) { catch (IOException ex) { System.err.println("Unexpected IOException: " + e); System.err.println("Unexpected IOException: " + e); }

try { try { ServerSocket server = new ServerSocket(2048); ServerSocket server = new ServerSocket(2048); server.setSoTimeout(30000); // block for no more than 30 seconds server.setSoTimeout(30000); // block for no more than 30 seconds int timeout = server.getSoTimeOut( ); int timeout = server.getSoTimeOut( ); if (timeout > 0) { if (timeout > 0) { System.out.println(server + " will time out after " System.out.println(server + " will time out after " + timeout + "milliseconds."); + timeout + "milliseconds."); } } else if (timeout == 0) { else if (timeout == 0) { System.out.println(server + " will never time out."); System.out.println(server + " will never time out."); } } else { else { System.out.println("Impossible condition occurred in " + server); System.out.println("Impossible condition occurred in " + server); System.out.println("Timeout cannot be less than zero." ); System.out.println("Timeout cannot be less than zero." ); } } }

import java.net.*; import java.net.*; import java.io.*; import java.io.*; //import com.macfaq.io.SafeBufferedReader; // from Chapter 4 //import com.macfaq.io.SafeBufferedReader; // from Chapter 4 class clientTest { class clientTest { public static void main(String[] args) { public static void main(String[] args) { int port; int port; try { try { port = Integer.parseInt(args[0]); port = Integer.parseInt(args[0]); } } catch (Exception ex) { catch (Exception ex) { port = 0; port = 0; } } try { try { ServerSocket server = new ServerSocket(port, 1); ServerSocket server = new ServerSocket(port, 1); System.out.println("Listening for connections on port " System.out.println("Listening for connections on port " + server.getLocalPort( )); + server.getLocalPort( )); while (true) { while (true) { Socket connection = server.accept( ); Socket connection = server.accept( ); try { try { System.out.println("Connection established with " System.out.println("Connection established with " + connection); + connection); Thread input = new InputThread(connection.getInputStream( )); Thread input = new InputThread(connection.getInputStream( )); input.start( ); input.start( ); Thread output Thread output = new OutputThread(connection.getOutputStream( )); = new OutputThread(connection.getOutputStream( )); output.start( ); output.start( ); // wait for output and input to finish // wait for output and input to finish try { try { input.join( ); input.join( ); output.join( ); output.join( ); } } catch (InterruptedException ex) { catch (InterruptedException ex) { } } catch (IOException ex) { System.err.println(ex); } finally { try { if (connection != null) connection.close( ); } catch (IOException ex) {} } catch (IOException ex) { e.printStackTrace( ); }