การเขียนโปรแกรมซ็อกเก็ตใน ใช้สำหรับการสื่อสารระหว่างแอพพลิเคชั่นที่ทำงานบนต่างกัน . อาจเป็นได้ทั้งแบบเน้นการเชื่อมต่อหรือไม่มีการเชื่อมต่อ โดยรวมแล้วซ็อกเก็ตเป็นวิธีการสร้างการเชื่อมต่อระหว่างไคลเอนต์และเซิร์ฟเวอร์ ในบทความนี้ฉันจะบอกคุณทุกอย่างเกี่ยวกับ Socket Programming
หัวข้อด้านล่างนี้กล่าวถึงในบทความนี้:
- Socket Programming ใน Java คืออะไร?
- Socket ใน Java คืออะไร?
- การเขียนโปรแกรมฝั่งไคลเอ็นต์
- การเขียนโปรแกรมฝั่งเซิร์ฟเวอร์
Socket Programming ใน Java คืออะไร?
การเขียนโปรแกรมซ็อกเก็ต เป็นวิธีการเชื่อมต่อสองโหนดบนเครือข่ายเพื่อสื่อสารระหว่างกัน หนึ่ง เบ้า (โหนด) ฟังพอร์ตเฉพาะที่ IP ในขณะที่อื่น ๆ เบ้า เอื้อมมือไปที่อื่นเพื่อสร้างการเชื่อมต่อ
เซิร์ฟเวอร์สร้าง Listener ซ็อกเก็ตในขณะที่ ไคลเอนต์เข้าถึงเซิร์ฟเวอร์ ซ็อกเก็ตและซ็อกเก็ตเซิร์ฟเวอร์ ใช้สำหรับการเขียนโปรแกรมซ็อกเก็ตที่เน้นการเชื่อมต่อ
ตอนนี้เรามาทำความเข้าใจกับแนวคิดหลักของการเขียนโปรแกรมซ็อกเก็ตเช่นซ็อกเก็ต
Socket ใน Java คืออะไร?
ถึง เบ้า ใน เป็นจุดสิ้นสุดหนึ่งของการเชื่อมโยงการสื่อสารสองทางระหว่างสองโปรแกรมที่ทำงานบนเครือข่าย ก เบ้า ถูกผูกไว้กับหมายเลขพอร์ตเพื่อให้เลเยอร์ TCP สามารถระบุแอปพลิเคชันที่ข้อมูลถูกกำหนดให้ส่งไป
จุดสิ้นสุดคือการรวมกันของที่อยู่ IP และหมายเลขพอร์ต แพคเกจในแพลตฟอร์ม Java จัดเตรียมคลาสเบ้าที่ใช้ด้านหนึ่งของการเชื่อมต่อสองทางระหว่างโปรแกรม Java ของคุณกับโปรแกรมอื่นบนเครือข่าย คลาสตั้งอยู่ด้านบนของการนำไปใช้งานที่ขึ้นกับแพลตฟอร์มซึ่งซ่อนรายละเอียดของระบบใดระบบหนึ่งจากโปรแกรม Java ของคุณ การใช้คลาสแทนการใช้โค้ดเนทีฟ สามารถสื่อสารผ่านเครือข่ายในรูปแบบที่ไม่ขึ้นกับแพลตฟอร์ม
ตอนนี้คุณรู้แล้วว่า Socket ใน Java คืออะไรมาดูกันว่าไคลเอนต์สื่อสารกับเซิร์ฟเวอร์อย่างไรและเซิร์ฟเวอร์ตอบสนองอย่างไร
การเขียนโปรแกรมฝั่งไคลเอ็นต์
ในกรณีของการเขียนโปรแกรมฝั่งไคลเอ็นต์ไคลเอนต์จะรอให้เซิร์ฟเวอร์เริ่มทำงานก่อน เมื่อเซิร์ฟเวอร์เปิดใช้งานเซิร์ฟเวอร์จะส่งคำขอไปยังเซิร์ฟเวอร์ หลังจากนั้นไคลเอนต์จะรอการตอบกลับจากเซิร์ฟเวอร์ ดังนั้นนี่คือตรรกะทั้งหมดของการสื่อสารไคลเอนต์และเซิร์ฟเวอร์ ตอนนี้เรามาทำความเข้าใจรายละเอียดเกี่ยวกับการเขียนโปรแกรมฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์กัน
ในการเริ่มต้นคำขอของลูกค้าคุณต้องทำตามขั้นตอนที่กล่าวถึงด้านล่าง:
1. สร้างการเชื่อมต่อ
ขั้นตอนแรกคือการสร้างการเชื่อมต่อซ็อกเก็ต การเชื่อมต่อซ็อกเก็ตหมายความว่าทั้งสองเครื่องมีข้อมูลเกี่ยวกับตำแหน่งเครือข่ายของกันและกัน (ที่อยู่ IP) และพอร์ต TCP
คุณสามารถสร้างซ็อกเก็ตด้วยความช่วยเหลือของข้อความด้านล่าง:
ซ็อกเก็ตซ็อกเก็ต = ซ็อกเก็ตใหม่ (“ 127.0.0.1”, 5000)
ที่นี่อาร์กิวเมนต์แรกแสดงถึง ที่อยู่ IP ของเซิร์ฟเวอร์ .
อาร์กิวเมนต์ที่สองแสดงถึง พอร์ต TCP . (เป็นตัวเลขที่แสดงว่าแอปพลิเคชันใดควรทำงานบนเซิร์ฟเวอร์)
2. การสื่อสาร
ในการสื่อสารผ่านการเชื่อมต่อซ็อกเก็ตสตรีมจะใช้สำหรับทั้งอินพุตและเอาต์พุตข้อมูล หลังจากสร้างการเชื่อมต่อและส่งคำขอคุณต้องปิดการเชื่อมต่อ
3. การปิดการเชื่อมต่อ
การเชื่อมต่อซ็อกเก็ตถูกปิดอย่างชัดเจนทันทีที่ส่งข้อความไปยังเซิร์ฟเวอร์
ตอนนี้เรามาดูวิธีการเขียนโปรแกรม Java เพื่อใช้การเชื่อมต่อซ็อกเก็ตที่ฝั่งไคลเอ็นต์
c ++ goto คำสั่ง
// โปรแกรม Java สำหรับ java.net นำเข้า ClientSide * import java.io. * คลาสสาธารณะ ClientProgram {// เริ่มต้นซ็อกเก็ตและอินพุตเอาต์พุตสตรีมซ็อกเก็ตซ็อกเก็ตส่วนตัว = null ส่วนตัว DataInputStream input = null ส่วนตัว DataOutputStream out = null // constructor เพื่อใส่ที่อยู่ IP และพอร์ตสาธารณะ Client (ที่อยู่สตริงพอร์ต int) {// สร้างการเชื่อมต่อลองใช้ {socket = new Socket (ที่อยู่พอร์ต) System.out.println ('Connected') // รับอินพุตจากอินพุตเทอร์มินัล = DataInputStream ใหม่ (System.in) // ส่งเอาต์พุตไปยังซ็อกเก็ต out = DataOutputStream ใหม่ (socket.getOutputStream ())} catch (UnknownHostException u) {System.out.println (u)} catch (IOException i) {System.out .println (i)} // string เพื่ออ่านข้อความจาก input String line = '' // อ่านต่อไปจนกว่าจะป้อน 'Over' ขณะที่ (! line.equals ('Over')) ) out.writeUTF (line)} catch (IOException i) {System.out.println (i)}} // ปิดการเชื่อมต่อลอง {input.close () out.close () socket.close ()} catch (IOException ผม ) {System.out.println (i)}} public static void main (String args []) {Client client = new Client ('127.0.0.1', 5000)}}
ตอนนี้เรามาใช้การเขียนโปรแกรมฝั่งเซิร์ฟเวอร์จากนั้นมาถึงผลลัพธ์
การเขียนโปรแกรมฝั่งเซิร์ฟเวอร์
โดยทั่วไปเซิร์ฟเวอร์จะสร้างอินสแตนซ์อ็อบเจ็กต์และรอคำขอของไคลเอ็นต์ เมื่อไคลเอนต์ส่งคำขอเซิร์ฟเวอร์จะสื่อสารกลับด้วยการตอบกลับ
ในการเขียนโค้ดแอปพลิเคชันฝั่งเซิร์ฟเวอร์คุณต้องมีซ็อกเก็ตสองซ็อกเก็ตและมีดังนี้:
ถึง ServerSocket ซึ่งรอการร้องขอของไคลเอ็นต์ (เมื่อไคลเอนต์สร้าง Socket ใหม่ ())
เก่าธรรมดา เบ้า สำหรับการสื่อสารกับลูกค้า
หลังจากนี้คุณต้องสื่อสารกับลูกค้าด้วยการตอบกลับ
การสื่อสาร
getOutputStream () ใช้วิธีการส่งเอาต์พุตผ่านซ็อกเก็ต
ปิดการเชื่อมต่อ
สิ่งสำคัญคือต้องปิดการเชื่อมต่อโดยปิดซ็อกเก็ตเช่นเดียวกับสตรีมอินพุต / เอาต์พุตเมื่อทุกอย่างเสร็จสิ้น
ตอนนี้เรามาดูวิธีการเขียนโปรแกรม Java เพื่อใช้การเชื่อมต่อซ็อกเก็ตที่ฝั่งเซิร์ฟเวอร์
// โปรแกรม Java สำหรับการนำเข้าเซิร์ฟเวอร์ java.net * import java.io. * คลาสสาธารณะ ServerSide {// initialize socket and input stream private Socket socket = null private ServerSocket server = null private DataInputStream in = null // constructor with พอร์ตสาธารณะเซิร์ฟเวอร์ (พอร์ต int) {// เริ่มเซิร์ฟเวอร์และรอการลองเชื่อมต่อ {server = new ServerSocket (พอร์ต) System.out.println ('เซิร์ฟเวอร์เริ่มต้น') System.out.println ('กำลังรอไคลเอนต์ .. . ') socket = server.accept () System.out.println (' Client ได้รับการยอมรับ ') // รับอินพุตจากซ็อกเก็ตไคลเอนต์ใน = DataInputStream ใหม่ (ใหม่ BufferedInputStream (socket.getInputStream ())) String line =' '/ / อ่านข้อความจากไคลเอนต์จนกว่าจะส่ง 'Over' ในขณะที่ (! line.equals ('Over')) {ลอง {line = in.readUTF () System.out.println (line)} catch (IOException i) {System. out.println (i)}} System.out.println ('การปิดการเชื่อมต่อ') // ปิดการเชื่อมต่อ socket.close () in.close ()} catch (IOException i) {System.out.println (i)}} โมฆะคงที่สาธารณะ main (String args []) { เซิร์ฟเวอร์เซิร์ฟเวอร์ = เซิร์ฟเวอร์ใหม่ (5000)}}
หลังจากกำหนดค่าไคลเอนต์และสิ้นสุดเซิร์ฟเวอร์แล้วคุณสามารถรันโปรแกรมฝั่งเซิร์ฟเวอร์ก่อน หลังจากนั้นคุณต้องเรียกใช้โปรแกรมฝั่งไคลเอ็นต์และส่งคำขอ ทันทีที่ส่งคำขอจากไคลเอนต์สิ้นสุดเซิร์ฟเวอร์จะตอบกลับ ด้านล่างสแนปชอตแสดงถึงสิ่งเดียวกัน
1. เมื่อคุณรันสคริปต์ฝั่งเซิร์ฟเวอร์สคริปต์จะเริ่มทำงานและรอให้ไคลเอ็นต์เริ่มต้น
2. ถัดไปไคลเอนต์จะได้รับการเชื่อมต่อและป้อนคำขอในรูปแบบของสตริง
วิธีการใช้จาวาสคริปต์คืออะไร
3. เมื่อไคลเอนต์ส่งคำขอเซิร์ฟเวอร์จะตอบกลับ
นั่นคือวิธีที่คุณต้องเรียกใช้โปรแกรมซ็อกเก็ตใน Java คุณยังสามารถเรียกใช้โปรแกรมเหล่านี้บนหน้าต่างเทอร์มินัลหรือพรอมต์คำสั่ง แต่เนื่องจาก Eclipse มีคุณสมบัติขั้นสูงคุณสามารถเรียกใช้ทั้งสองโปรแกรมบนคอนโซลได้
เรามาถึงตอนท้ายของบทความเกี่ยวกับ Socket Programming ใน Java ฉันหวังว่าฉันจะให้ความรู้กับคุณบ้าง การเขียนโปรแกรมซ็อกเก็ต
ตรวจสอบไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก เราพร้อมที่จะช่วยเหลือคุณในทุกขั้นตอนในการเดินทางของคุณสำหรับการเป็นนอกเหนือจากคำถามสัมภาษณ์ java นี้เรามาพร้อมกับหลักสูตรที่ออกแบบมาสำหรับนักเรียนและมืออาชีพที่ต้องการเป็น Java Developer
มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบทความ 'Socket Programming in Java' และเราจะติดต่อกลับโดยเร็วที่สุด