#!/usr/bin/env ruby1.8 require 'socket' GPS_SERVER_IP = "192.168.2.1" GPS_SERVER_PORT = 5445 MODE = :tcp_server #MODE = :tcp_client #MODE = :udp_server def tcp_read(sock) loop { begin data = sock.readline() p data rescue Errno::EAGAIN, Errno::EWOULDBLOCK => e puts "read error: #{e.class}: #{e}" return end } end def udp_read(sock) loop { begin msg, sender = sock.recvfrom(1024) p sender p msg rescue Errno::EAGAIN, Errno::EWOULDBLOCK => e puts "recvfrom error: #{e.class}: #{e}" next end } end if MODE == :tcp_client sock = TCPSocket.new(GPS_SERVER_IP, GPS_SERVER_PORT) tcp_read(sock) sock.close elsif MODE == :tcp_server serv = TCPServer.new(GPS_SERVER_PORT) sock = serv.accept tcp_read(sock) sock.close elsif MODE == :udp_server sock = UDPSocket.new sock.bind('0.0.0.0', GPS_SERVER_PORT) udp_read(sock) sock.close end