Rubyにて,Socket通信を行いたいため,はじめに以下の簡単なプログラムを作成しました.
server.rb
Ruby
1require 'socket' 2 3gate = TCPServer.open(50000) 4 5sock = gate.accept 6gate.close 7 8puts "get: #{sock.gets}" 9 10sock.write("Hello Client") 11 12sock.close
client.rb
Ruby
1require 'socket' 2 3sock = TCPSocket.open("localhost", 50000) 4 5sock.write("Hello Server") 6 7puts "get: #{sock.gets}" 8 9sock.close
しかし,動かしてみると,クライアント側で送信はできているのですが,
サーバーで受信ができておらず,次のステップに進みません.
さらに疑問なのが,処理を終わらすために,クライアント側でCtrl+Cで停止させると,
Traceback (most recent call last): 1: from client.rb:7:in `<main>' client.rb:7:in `gets': Interrupt
のようなエラー文が出るのですが,サーバー側では,クライアント側で送信した文字列が,
クライアントを停止したと同時に表示されるのです.
(クライアントが動いている間は,表示しません.)
また,クライアントの送信部分であるsock.write
をsock.puts
に変えると送信することができます.
さらに,サーバー側ではsock.write
のままで送信ができてしまいます.
これらの原因について,わかる方,どうか回答お願いします.
他に知りたいことがあれば,コメントお願いします.
Rubyのバージョン: 2.5.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/06/16 16:07
2018/06/16 16:08