TCP เป็น protocol ที่ช่วยให้เราเขียนโปรแกรมให้ติดต่อสื่อสารกันผ่านระบบ network ได้ และวันนี้จะพามาดูวิธีเขียน Ruby เพื่อสร้างโปรแกรมเป็น TCP Server และ TCP Client ซึ่ง Ruby มี library socket ที่เตรียม class ไว้ให้แล้ว ทำให้สร้างได้ง่ายมาก ๆ
สร้าง TCP Server
เราจะใช้ class TCPServer ซึ่งตัวอย่างโค้ดจะเป็นโค้ดที่เอาไว้เปิด TCP socket ไว้รับการ connect จาก client
require 'socket'
server = TCPServer.new 2000
loop do
Thread.start(server.accept) do |client|
client.puts "Hello !"
client.puts "Time is #{Time.now}"
client.close
end
end
จะเห็นว่าเราต้อง require 'socket'
เข้ามาก่อน จากนั้นจะสร้าง TCPServer object โดยระบุ port ที่ต้องการเปิดไว้ว่าเป็น port 2000
เมื่อได้ server object แล้วเราก็จัดการเรียก method server.accept
เพื่อรอรับการ connect จาก client เราจะได้ client object กลับมา และเราใช้ Thread.start ครอบเอาไว้เพื่อว่าเมื่อ client connect มาแล้วเราจะแยกไปทำงานอีก thread ทำให้เราสามารถ connect หลาย ๆ client ได้พร้อมกัน
ส่วนโค้ดที่ทำงานให้แต่ละ thread นั้นเมื่อเรามี client object เราก็สามารถใช้ method puts เพื่อส่งข้อมูลไปหา client ได้ และเรียก close เพื่อปิด connection ของ client นี้
สร้าง TCP Client
เราจะใช้ class TCPSocket ซึ่งตัวอย่างโค้ดจะเป็นการ connect ไปหา server แล้วใช้ method gets เพื่ออ่านข้อมูลจาก server ที่ส่งมา
require 'socket'
s = TCPSocket.new 'localhost', 2000
while line = s.gets # Read lines from socket
puts line # and print them
end
s.close # close socket when done
เมื่อรัน server ก่อน แล้วทดลองรัน client ก็จะได้ผลลัพธ์ประมาณนี้
Top comments (0)