質問編集履歴

3 訂正

kazuyakazuya

kazuyakazuya score 161

2019/07/17 15:48  投稿

Ruby client わからないところが。。。
参考書をみながらタイムアウト処理を備えた簡単クライアントプログラムを作ったのですが
わからないところがあります。
```ruby
require 'socket'
require 'timeout'
host = if ARGV[0] then ARGV[0] else 'localhost' end
port = if ARGV[1] then ARGV[1] else 'echo' end
sock= nil
Timeout.timeout(200) {
 sock = TCPServer.open(host,port)
}
while msg = STDIN.gets
 count = 0
 begin
  sock.write(msg)
   Timeout.timeout(200){
     print sock.gets ←ここ!
   }
 rescue TimeoutError
  if count < 3
   count += 1
   STDERR.print "EEEError!"
   retry
  else
    raise
  end
 end
end
sock.closes
```
上記のうちの
```ruby
print sock.gets
```
これについてですが
1・・・
これはサーバーに接続するのに成功するか失敗するかの分岐点ですか?
それとも、サーバーに接続する処理というのは
```ruby
sock = TCPServer.open(host,port)
```
ここで判断されるのでしょうか?
2・・・
```ruby
sock = TCPServer.open(host,port)
```
これがサーバーに接続するか判断するものだとしたら
```ruby
print sock.gets
```
これは一体なにをするものなのですか?
わからないのでお願いします。
____
**追記**
シンプルに・・・
```ruby
print sock.gets
```
これはなにをしたいのですか?
これはなにをしたいのですか?
**追記**
すみません
コードが抜けているところがありました。
  • Ruby

    15415 questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

2 コード変更

kazuyakazuya

kazuyakazuya score 161

2019/07/17 15:47  投稿

Ruby client わからないところが。。。
参考書をみながらタイムアウト処理を備えた簡単クライアントプログラムを作ったのですが
わからないところがあります。
```ruby
require 'socket'
require 'timeout'
host = if ARGV[0] then ARGV[0] else 'localhost' end
port = if ARGV[1] then ARGV[1] else 'echo' end
sock= nil
Timeout.timeout(200) {
 sock = TCPServer.open(host,port)
}
while msg = STDIN.gets
 count = 0
 begin
  sock.write(msg)  
   Timeout.timeout(200){
     print sock.gets ←ここ!
   }
 rescue TimeoutError
  if count < 3
   count += 1
   STDERR.print "EEEError!"
   retry
  else
    raise
  end
 end
end
sock.closes
```
上記のうちの
```ruby
print sock.gets
```
これについてですが
1・・・
これはサーバーに接続するのに成功するか失敗するかの分岐点ですか?
それとも、サーバーに接続する処理というのは
```ruby
sock = TCPServer.open(host,port)
```
ここで判断されるのでしょうか?
2・・・
```ruby
sock = TCPServer.open(host,port)
```
これがサーバーに接続するか判断するものだとしたら
```ruby
print sock.gets
```
これは一体なにをするものなのですか?
わからないのでお願いします。
____
**追記**
シンプルに・・・
```ruby
print sock.gets
```
これはなにをしたいのですか?
  • Ruby

    15415 questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1 追記

kazuyakazuya

kazuyakazuya score 161

2019/07/17 15:32  投稿

Ruby client わからないところが。。。
参考書をみながらタイムアウト処理を備えた簡単クライアントプログラムを作ったのですが
わからないところがあります。
```ruby
require 'socket'
require 'timeout'
host = if ARGV[0] then ARGV[0] else 'localhost' end
port = if ARGV[1] then ARGV[1] else 'echo' end
sock= nil
Timeout.timeout(200) {
 sock = TCPServer.open(host,port)
}
while msg = STDIN.gets
 count = 0
 begin
   Timeout.timeout(200){
     print sock.gets ←ここ!
   }
 rescue TimeoutError
  if count < 3
   count += 1
   STDERR.print "EEEError!"
   retry
  else
    raise
  end
 end
end
sock.closes
```
上記のうちの
```ruby
print sock.gets
```
これについてですが
1・・・
これはサーバーに接続するのに成功するか失敗するかの分岐点ですか?
それとも、サーバーに接続する処理というのは
```ruby
sock = TCPServer.open(host,port)
```
ここで判断されるのでしょうか?
2・・・
```ruby
sock = TCPServer.open(host,port)
```
これがサーバーに接続するか判断するものだとしたら
```ruby
print sock.gets
```
これは一体なにをするものなのですか?
わからないのでお願いします。
わからないのでお願いします。
____
**追記**
シンプルに・・・
```ruby
print sock.gets
```
これはなにをしたいのですか?
  • Ruby

    15415 questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る