【发布时间】:2011-02-28 13:10:28
【问题描述】:
您好,我一直在使用 Ruby 中的 Sockets,遇到了一些我尝试修改并破坏的示例代码。我想知道它为什么坏了。
服务器:
require "socket"
dts = TCPServer.new('127.0.0.1', 20000)
loop do
Thread.start(dts.accept) do |s|
print(s, " is accepted\n")
s.write(Time.now)
print(s, " is gone\n")
s.close
end
end
有效的客户端:
require 'socket'
streamSock = TCPSocket.new( "127.0.0.1", 20000 )
streamSock.print( "Hello\n" )
str = streamSock.recv( 100 )
print str
streamSock.close
客户端损坏
require 'socket'
streamSock = TCPSocket.new( "127.0.0.1", 20000 )
streamSock.print( "Hello\n" )
str=streamSock.read #this line modified
print str
streamSock.close
我知道streamSock.print 是不必要的(以及非红宝石命名方案),但我不明白为什么read 不起作用而recv 起作用,这是为什么呢?
【问题讨论】:
-
如果有人在损坏的示例中发现了这一点,我有一个不同的 IP 地址。忽略,复制粘贴的时候忘记改了
-
你的两个客户对我来说都很好。我在 OS X Snow Leopard 上。
-
@mark Arch Linux 并在 OpenBSD 上测试过
-
我在这里也有类似的问题。
socket.read从未收到任何回复。socket.recv(4096)效果很好。任何机会sockert.read期望\r\n?
标签: ruby networking sockets