DEV Community

Weerasak Chongnguluam
Weerasak Chongnguluam

Posted on

สร้าง TCP Client และ Server ง่าย ๆ ด้วย Ruby

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
Enter fullscreen mode Exit fullscreen mode

จะเห็นว่าเราต้อง 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
Enter fullscreen mode Exit fullscreen mode

เมื่อรัน server ก่อน แล้วทดลองรัน client ก็จะได้ผลลัพธ์ประมาณนี้

Alt Text

Top comments (0)