Xin chào Tôi đã rối tung xung quanh với Sockets trong Ruby một số và đi qua một số mã ví dụ mà tôi đã cố gắng sửa đổi và phá vỡ. Tôi muốn biết tại sao nó bị hỏng.Socket.recv hoạt động nhưng không được đọc hoặc đọc?
Server:
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
Client hoạt động:
require 'socket'
streamSock = TCPSocket.new("127.0.0.1", 20000)
streamSock.print("Hello\n")
str = streamSock.recv(100)
print str
streamSock.close
Client được chia
require 'socket'
streamSock = TCPSocket.new("127.0.0.1", 20000)
streamSock.print("Hello\n")
str=streamSock.read #this line modified
print str
streamSock.close
Tôi biết rằng streamSock.print
là không cần thiết (cũng như sơ đồ đặt tên con không ruby) nhưng tôi không hiểu tại sao read
không hoạt động trong khi recv
, Tại sao lại như vậy?
nếu có ai phát hiện ra trong ví dụ bị hỏng, tôi có một địa chỉ IP khác. bỏ qua điều đó, tôi quên thay đổi nó khi sao chép-dán – Earlz
Hãy xem câu hỏi liên quan này: http://stackoverflow.com/questions/1147852/ruby-tcpsocket-write-doesnt-work-but-puts-does –
Cả hai khách hàng của bạn làm việc tốt cho tôi. Tôi đang ở trên OS X Snow Leopard. – Hongli