tl;dr
ちょっとした動作確認とかで TCP Server が必要な時に使いたいので、参考サイトを見よう見まねで Echo サーバーっぽいのを写経した。
Python de TCP Server
参考
- http://docs.python.jp/2/library/socketserver.html
- http://qiita.com/ponsuke/items/6a90ef8c2a76b3e236df
ソースコード
#!/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
参考
- http://docs.ruby-lang.org/ja/2.0.0/class/TCPServer.html
- http://rubytips86.hatenablog.com/entry/2014/03/23/183612
ソースコード
#!/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
以上
監視システムのチェックとかに使いたい。