tl;dr

ちょっとした動作確認とかで TCP Server が必要な時に使いたいので、参考サイトを見よう見まねで Echo サーバーっぽいのを写経した。

github.com

Python de TCP Server

参考

ソースコード

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import SocketServer
import logging

logging.basicConfig(
    level=logging.INFO,
    filename='log.txt',
    format="%(asctime)s %(levelname)s %(message)s")

class TCPHandler(SocketServer.StreamRequestHandler):
  def handle(self):
    self.data = self.rfile.readline().strip()
    # print self.data
    logging.info('Python TCP Server Test Input:' + self.data.strip())

if __name__ == "__main__":
  HOST, PORT = '127.0.0.1', 18181
  server = SocketServer.TCPServer((HOST, PORT), TCPHandler)
  server.serve_forever()

使い方

以下のように起動。

$ python test.py &

以下のようにアクセス。

$ echo "baz" | nc 127.0.0.1 18181

以下のように確認。

$ tail log.txt
2015-11-17 00:09:34,349 INFO Python TCP Server Test Input:baz

Ruby de TCP Server

参考

ソースコード

#!/usr/bin/env ruby

require 'socket'
require 'logger'

log = Logger.new("log.txt")
server = TCPServer.new('0.0.0.0', 18282)
loop do
  Thread.start(server.accept){|s|
    while buffer = s.gets
      # puts buffer
      log.info("Ruby TCP Server Test Input: #{buffer.strip}")
    end
    s.close
  }
end

使い方

以下のように起動。

$ ruby test.rb &

以下のようにアクセス。

$ echo "baz" | nc 127.0.0.1 18282
baz

以下のように確認。

$ tail log.txt
I, [2015-11-17T00:11:33.846962 #6318]  INFO -- : Ruby TCP Server Test Input: baz

以上

監視システムのチェックとかに使いたい。

元記事はこちら

(超メモ)Ruby と Python で TCP Server サンプル