Java TCP Sockets

https://i2.wp.com/ecx.images-amazon.com/images/I/51tkvoGC8jL._SL500_.jpg?resize=281%2C346

การสร้างลิงค์ติดต่อสื่อสารแบบ TCP/IP ที่เป็น sockets เป็นการเชื่อมต่อแบบ connection-orientated

ซึ่งนั้นก็หมายความว่าการสนทนาระหว่างเครื่อง client กับ server จะทำการเชื่อมต่อตลอดเวลาที่สนทนานอกเสียจากมันจะเสีย ซึ่งการสนทนากันหรือการแลกเปลี่ยนข้อมูลระหว่าง client กับ server นั้นจะต้องเป็นไปตามกฎของ protocol ซึ่งจะการกำหนดลักษณะการทำงานนั้น ทำให้สามารถแบ่งขั้นตอนการทำงานของ server ได้ 5ขั้นตอน ดังนี้

1. สร้าง object ของ ?ServerSocket

ServerSocket constructor ต้องการค่า หมายเลข port ?(มีค่าตั้งแต่ 1024-65535 โดยไม่คิดรวมหมายเลข port สงวน ) เป็นค่า argument ตัวอย่างเช่น

ServerSocket servSock = new ServerSocket(1234);

จากตัวอย่างนี้จะทำให้ server ให้บริการ client ที่ทำการเชื่อมต่อมายัง port 1234

2. ทำให้ server อยู่ในสถานะพร้อมบริการ

Server จะอยู่ในสถานะที่รอให้บริการได้นั้นจะต้องมีการเรียกใช้ method accept ของ class ServerSocket ซึ่งจะreturn ค่าเป็น object ของ Socket class ตัวอย่างการใช้งานเช่น

Socket link = servSock.accept();

3. ตั้งค่า input และ output stream

methods getInputStream และ getOutputStream เป็น method ที่ class Socket ใช้สำหรับ อ่านค่าที่ได้จาก stream ในการเชื่อมต่อกันใน 2 ขั้นตอน ในการเชื่อมต่อสื่อสาร client ได้สร้าง connection เราสามารถใช้ Scanner object ในการอ่านค่าจาก InputStream object โดย return ค่าโดน method getInputStream โดยอยู่ในรูป string ? orientated input โดยถูกกำหนดจาก standard input stream,System.in

ตัวอย่างเช่น

Scanner input = new Scanner(link.getInputStream());

ลักษณะคล้ายกัน เราก็สามารถส่ง output โดยใช้ PrintWriter object ในการส่งค่า output ไปยัง OutputStream object โดยใช้ method ที่ชื่อว่า getOutputStream ?ซึ่งสามารถใช้ได้โดยการกำหนดค่า ใน constructor ของ PrintWriter โดยกำหนดค่า agument 2 ค่า

ตัวอย่าง

PrintWriter output = new PrintWriter(link.getOutputStream(),true);

4. ส่งและรับข้อมูล

หลังจากที่ทำการ set up Scanner และ PrintWrite ให้สามารถส่งและรับข้อมูลได้แล้วก็จะทำการรับและส่งข้อมูล โดยใช้ method nextLine สำหรับอ่านข้อมูลที่รับเข้ามา และใช้ method println สำหรับส่งข้อมูล

ตัวอย่างการใช้งาน

output.println(“Awaiting data…”);

String input = input.nextLine();

5. สุดท้ายเมื่อเสร็จสิ้นการเชื่อมต่อก็ต้องทำการปิดการเชื่อมต่อ

Leave a Reply

Your email address will not be published. Required fields are marked *