きなきなのFire挑戦日誌

ふつーのサラリーマンがふつーにFireに憧れて、株でFireを目指す日誌です。

TCP通信の練習(Ruby使用)

2020年3月26日

■参考サイト
Geekなページ TCP通信ByRuby
http://www.geekpage.jp/programming/ruby-network/tcp-1.php

Rubyの実行
https://www.javadrive.jp/ruby/ini/index2.html

Windowsでポート開放を確認(PowerShell
https://lab.taf-jp.com/windows%E3%81%A7%E3%83%9D%E3%83%BC%E3%83%88%E6%8C%87%E5%AE%9A%E3%81%AE%E6%8E%A5%E7%B6%9A%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/
https://mhiroblog.wordpress.com/2016/07/21/%E3%83%9D%E3%83%BC%E3%83%88%E7%95%AA%E5%8F%B7%E6%8C%87%E5%AE%9A%E3%81%A7%E3%81%AE%E7%96%8E%E9%80%9A%E7%A2%BA%E8%AA%8D%E6%96%B9%E6%B3%95/

Windowsでポート開放(Windowsファイアウォール
https://support.borndigital.co.jp/hc/ja/articles/360002711593-Windows10%E3%81%A7%E7%89%B9%E5%AE%9A%E3%81%AE%E3%83%9D%E3%83%BC%E3%83%88%E3%82%92%E9%96%8B%E6%94%BE%E3%81%99%E3%82%8B
http://yakudate.com/win10-port-open/
https://teratail.com/questions/21160


■目標
1.TCP/IP通信の理解

2.ポートの理解

3.TCPコネクション(3Wayハンドシェイク)の理解

4.Rubyスクリプトの理解


■結果
成功


■疑問点
localhost指定でOK、BUT、127.0.0.1ではNG


■手順
0.Rubyインストール

1.TCPサーバを用意(言語:Ruby


#(TCPサーバ側)
#!/usr/bin/ruby
require "socket"
# ポート番号20000番でopen
s0 = TCPServer.open(20000)
# クライアントからの接続を受け付ける
sock = s0.accept
# クライアントからのデータを最後まで受信する
# 受信したデータはコンソールに表示される
while buf = sock.gets
p buf
end
# クライアントとの接続ソケットを閉じる
sock.close
# 待ちうけソケットを閉じる
s0.close


上記をXXX.rbファイルで保存


2.TCPクライアントを用意(言語:Ruby


#(TCPクライアント側)
#!/usr/bin/ruby
require "socket"
# 127.0.0.1(localhost)の20000番へ接続
sock = TCPSocket.open("localhost", 20000)
# HELLOという文字列を送信
sock.write("HELLO")
# 送信が終わったらソケットを閉じる
sock.close

上記をXXX.rbファイルで保存


3.ポート開放

Windowsファイアウォール、受信、ポート、TCP、20000
→接続許可


4.実行

Windowsプロンプトを2つ起動
1つで、TCPサーバ側を指定、実行

ruby XXX\tcp-srv_ruby.rb

もう一つで、TCPクライアント側を指定、実行

ruby XXX\tcp-clt_ruby.rb

TCPサーバ側の実行でTCPサーバ側はリッスン状態。
 TCPクライアントを実行すると、localhostの20000
 に接続し、TCPサーバ側で受信すると、Hello!を返し
 クローズする

 

■補遺
netstat -ano

 


以上