5
你好我一直在与一些Ruby中的套接字搞混了,并遇到了一些我试图修改和破坏的示例代码。我想知道它为什么坏了。Socket.recv的作品,但没有得到或读取?
服务器:
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地址。无视这一点,我忘了去改变它时的复制粘贴 – Earlz 2010-06-07 04:45:32
看看此相关的问题:http://stackoverflow.com/questions/1147852/ruby-tcpsocket-write-doesnt-work-but-puts-does – 2010-06-07 04:52:36
两个你的客户对我来说工作得很好。我在OS X Snow Leopard上。 – Hongli 2010-06-07 10:41:50