2015-09-21 53 views
0

使用eventmachine寶石我試圖在本地主機上發送和接收數據。以下是我的客戶端和服務器文件的代碼。EventMachine未在本地主機上接收TCP數據

server.rb

class BCCServer < EM::Connection 
    attr_accessor :server_socket 

    def post_init 
     puts "BCC Server" 
    end 

    def recieve_data(data) 
     puts "Received data: #{data}" 

     send_data "You sent: #{data}" 
    end 

end 

EM.run do 
    EM.start_server("0.0.0.0", 3000, BCCServer) 
end 

client.rb

class DCClient < EventMachine::Connection 
    def post_init 
    puts "Sending " 
    send_data "send data" 
    close_connection_after_writing 
    end 

    def receive_data(data) 
    puts "Received #{data.length} bytes" 
    end 

    def unbind 
    puts 'Connection Lost !' 
    end 
end 

EventMachine.run do 
    EventMachine::connect("127.0.0.1", 3000, DCClient) 
end 

我在單獨的控制檯執行服務器和客戶端的文件。以下是客戶端

客戶端輸出

Sending 
Connection Lost ! 

服務器輸出

BCC Server 
............>>>10 

的輸出在服務器上的文件我已經打印接收到的數據,但它的表現」 ...... ........ >>> 10" 。我在哪裏做錯了?

感謝

回答

3

,如果你看一下EM ::連接實現

https://github.com/eventmachine/eventmachine/blob/master/lib/em/connection.rb

def receive_data data 
    puts "............>>>#{data.length}" 
end 

方法receive_data返回你正在經歷什麼。 這意味着原來的方法被調用,而不是你的。這意味着一件事。你有一個方法,一個錯字,你試圖重寫:)

在BCCServer你有

recieve_data(data) 

,而不是

receive_data(data) 
+0

是,它在服務器上的文件錯字。謝謝 – Arif

相關問題