บางทีคุณอาจประทับใจกับฟังก์ชันอันทรงพลังและเทคโนโลยีขั้นสูงของซอฟต์แวร์แอปพลิเคชันอินเทอร์เน็ต เช่น เบราว์เซอร์ IE ของ Microsoft บางทีคุณอาจยังไม่สามารถพัฒนาระบบขนาดใหญ่ที่ซับซ้อนเช่นนี้ได้ แต่อย่ากังวล ที่นี่สามารถให้โอกาสคุณได้ การปฏิบัติ คือการเรียนรู้การใช้ Winsocket ของ Delphi เพื่อเขียนแอปพลิเคชันที่ใช้ TCP/ip ถือว่าคุณคุ้นเคยกับเครื่องมือพัฒนา Delphi แล้ว
เราสามารถจินตนาการได้ว่าหากคุณเขียนโปรแกรมเพื่อสื่อสารกับคอมพิวเตอร์ระยะไกลตั้งแต่เริ่มต้น คุณจะต้องมีความคุ้นเคยและความเชี่ยวชาญในโปรโตคอลเครือข่ายที่เกี่ยวข้อง ความรู้พื้นฐานของระบบ และเทคโนโลยีซอฟต์แวร์และฮาร์ดแวร์เครือข่าย สามารถทำได้ในช่วงเวลาสั้นๆ เท่านั้น ไม่ใช่เรื่องง่ายสำหรับคนส่วนใหญ่
โชคดีที่ไลบรารีส่วนประกอบเครือข่ายของ Delphi มีส่วนประกอบสำหรับการนำการสื่อสารเครือข่ายไปใช้ ซึ่งสรุปรายละเอียดการใช้งานที่ซับซ้อน ส่วนประกอบ ClientSocket และ ServerSocket ช่วยให้เราสามารถเขียนโปรแกรมการสื่อสารเครือข่ายและแบ่งปันทรัพยากรของเราเองได้อย่างง่ายดาย
ขั้นตอนในการเขียนโปรแกรม Winsocket ใน Delphi 4.0 มีดังนี้:
1) การตั้งค่าคุณสมบัติส่วนประกอบ Winsocket
2) สร้างการเชื่อมต่อกับคอมพิวเตอร์ระยะไกล
3) การส่งข้อมูลระหว่างคอมพิวเตอร์
สามขั้นตอนเหล่านี้มีการอธิบายโดยละเอียดด้านล่าง
หนึ่ง. การตั้งค่าคุณสมบัติ Winsocket
ใน Delphi 4.0 Winsocket แบ่งออกเป็นสององค์ประกอบ: ClientSocket และ ServerSocket ทำหน้าที่เป็นส่วนประกอบฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์ตามลำดับ นั่นคือส่วนประกอบ ClientSocket ถูกใช้ในโปรแกรมไคลเอนต์ และส่วนประกอบ ServerSocket ถูกใช้บนฝั่งเซิร์ฟเวอร์ ด้วยการสื่อสารระหว่างส่วนประกอบทั้งสองนี้ ควบคู่ไปกับโค้ดแอปพลิเคชันเสริม ทำให้สามารถใช้งานโปรแกรมการสื่อสารอย่างง่ายได้ แน่นอนว่า หากมีการนำ ServerSocket เข้าสู่โปรแกรมไคลเอนต์ โปรแกรมไคลเอนต์สามารถทำหน้าที่เป็นเซิร์ฟเวอร์และตอบสนองต่อคำขอจากโปรแกรมไคลเอนต์อื่น ๆ ได้
หากคุณกำลังเขียนโปรแกรมฝั่งเซิร์ฟเวอร์ คุณต้องตั้งค่าคุณสมบัติ Port ของส่วนประกอบ ServerSocket เหตุผลที่ตั้งค่าพารามิเตอร์นี้เนื่องจากอาจมีโปรแกรมเซิร์ฟเวอร์หลายโปรแกรมที่ทำงานบนคอมพิวเตอร์เครื่องเดียวกัน และอาจยอมรับคำขอการเชื่อมต่อจากโปรแกรมไคลเอนต์ระยะไกลอย่างต่อเนื่อง หากคุณกำลังพยายามส่งอีเมลและระบบเชื่อมต่อคำขอของคุณกับโปรแกรมเซิร์ฟเวอร์อื่น อีเมลของคุณจะถูกส่งไม่ถูกต้องอย่างแน่นอน ดังนั้นจึงต้องตั้งค่าหมายเลขพอร์ตพอร์ตที่เหมาะสมสำหรับส่วนประกอบ ServerSocket บนโปรแกรมเซิร์ฟเวอร์ คุณยังสามารถตั้งค่าแอตทริบิวต์บริการ ซึ่งระบุประเภทของบริการที่ ServerSocket มอบให้ เช่น FTP, HTTP เป็นต้น จากนั้นตั้งค่าคุณสมบัติ Active เป็น True
หากคุณกำลังเขียนโปรแกรมไคลเอ็นต์ มีคุณสมบัติเพิ่มเติมในการตั้งค่าส่วนประกอบ ClientServer ควรตั้งค่าแอตทริบิวต์ Port ให้สอดคล้องกับค่าของแอตทริบิวต์ Port บนฝั่งเซิร์ฟเวอร์ นอกจากนี้ คุณสมบัติโฮสต์จะต้องตั้งค่าอย่างถูกต้อง ซึ่งเป็นคุณสมบัติแบบอ่านอย่างเดียวและไม่พร้อมใช้งานในขณะออกแบบ โดยระบุชื่อโฮสต์ของเซิร์ฟเวอร์ระยะไกลที่โปรแกรมไคลเอนต์ต้องการเชื่อมต่อ คุณยังสามารถตั้งค่าแอตทริบิวต์ Address ซึ่งเป็นที่อยู่ IP ของโฮสต์ระยะไกลได้ หากตั้งค่าแอตทริบิวต์ทั้งสอง ระบบจะใช้แอตทริบิวต์ Host และที่อยู่ IP ที่กำหนดโดยแอตทริบิวต์ Address จะไม่ถูกต้อง
สอง. สร้างการเชื่อมต่อกับคอมพิวเตอร์ระยะไกล
ในการถ่ายโอนข้อมูลระหว่างระบบคอมพิวเตอร์ระยะไกล จะต้องสร้างการเชื่อมต่อระหว่างโฮสต์การสื่อสารทั้งสองก่อน
คอมโพเนนต์ ServerSocket บนฝั่งเซิร์ฟเวอร์เรียกเมธอด Open เพื่อเริ่มต้นการเชื่อมต่อซ็อกเก็ต ในเวลาเดียวกัน จะตั้งค่าแอ็ตทริบิวต์ Active เป็น True ตั้งค่าคอมโพเนนต์ ServerSocket เป็นโหมดการฟัง และตรวจพบว่ามีคำขอการเชื่อมต่อหรือไม่เมื่อใดก็ได้
หากเซิร์ฟเวอร์ยอมรับคำขอการเชื่อมต่อจากโปรแกรมไคลเอนต์ เหตุการณ์ OnAccept จะถูกทริกเกอร์ รหัสต่อไปนี้คือสิ่งที่โปรแกรมเซิร์ฟเวอร์ต้องทำหลังจากยอมรับการเชื่อมต่อ
PROcedure Myform..ServerSocketAccept (ผู้ส่ง: TObject, ซ็อกเก็ต: TCustomWinSocket);
เริ่ม
IsServer := จริง;
จบ;
ในโปรแกรมไคลเอ็นต์ ส่วนประกอบ ClientSocket จะตั้งค่าคุณสมบัติที่จำเป็น เช่น พอร์ต และโฮสต์ จากนั้นตั้งค่าคุณสมบัติ Active เป็น True เพื่อทำการร้องขอการเชื่อมต่อ
สาม. การถ่ายโอนข้อมูลระหว่างคอมพิวเตอร์
เมื่อเซิร์ฟเวอร์ยอมรับคำขอเชื่อมต่อจากไคลเอนต์ ไคลเอนต์ก็สามารถส่งข้อมูลได้ ในขณะนี้ มีซ็อกเก็ตระหว่างไคลเอนต์และเซิร์ฟเวอร์ และการสื่อสารสามารถทำได้ผ่านซ็อกเก็ตนี้ ดังนั้นแอตทริบิวต์ Socket จึงมีความสำคัญมากและมีหลายวิธี คุณสามารถส่งและรับข้อมูลได้โดยใช้วิธีการง่ายๆ ไม่กี่วิธี
ฝั่งไคลเอ็นต์ใช้แบบฟอร์มต่อไปนี้: ClientSocket1.socket.sendtext('string you want to send');
ทางฝั่งเซิร์ฟเวอร์ ใช้แบบฟอร์มต่อไปนี้: ServerSocket1.socket.recievetext(str: string); ฟังก์ชันนี้จะส่งคืนความยาวของสตริงที่ได้รับและเก็บสตริงไว้ในตัวแปร str
ข้างต้นเป็นตัวอย่างที่ง่ายที่สุดของการส่งข้อมูล คุณยังสามารถใช้วิธีการอื่นๆ ที่ได้รับจากคุณสมบัติ Socket เพื่อดำเนินการรับส่งข้อมูลที่ซับซ้อน
แม้ว่าการใช้ส่วนประกอบ Winsocket ใน Delphi 4.0 จะสะดวกมาก แต่หากคุณต้องการเชี่ยวชาญการใช้งานส่วนประกอบดังกล่าวเพื่อพัฒนาแอปพลิเคชันเครือข่าย คุณจะต้องอ่านไฟล์วิธีใช้และโปรแกรมตัวอย่างอย่างละเอียด เปรียบเทียบข้อดีของวิธีนี้ในการเรียนรู้อย่างต่อเนื่อง ฝึกฝนคุณสมบัติการเขียนโปรแกรม จากนั้นฝึกฝนทักษะการเขียนโปรแกรมของส่วนประกอบเครือข่ายอื่นๆ ที่มีใน Delphi เช่น NMPOP3, NMUDP, NMFTP เป็นต้น เมื่อถึงเวลานั้น คุณจะสามารถมีส่วนร่วมในการพัฒนาแอปพลิเคชันเครือข่ายจริง แทนที่จะแค่นำซอฟต์แวร์แอปพลิเคชันเครือข่ายของผู้อื่น มาตั้งค่า และใช้งานอย่างเชี่ยวชาญ