2016-02-29 176 views
2

我想了解如何使用Node.js的UDP套接字連接到UDP套接字另一臺計算機上,我收到以下錯誤:UDP套接字

bind EADDRNOTAVAIL192.168.1.50;12345 

我使用下面的代碼:

var port = 12345; 
    var host = "192.168.1.50"; 
    var sock = dgram.createSocket("udp4"); 
    sock.on("listening", function() { 
     console.log("server listening "); 
    }); 

    sock.on("error", function (err) { 
     console.log("server error:\n" + err.stack); 
     sock.close(); 
    }); 

    //start the UDP server with the radar port 12345 
    sock.bind(port, host); 

有幫助嗎?

感謝

+0

是IP是遠程還是本地IP地址? – Ben

+0

遠程服務器。 –

+0

EADDRNOTAVAIL通常表示端口或IP地址不可用。而192.168.1.50是你的系統IP地址?主機應該是你的本地地址。 –

回答

0

您可以通過以下方式發送UDP數據包(示例代碼)

var dgram = require('dgram'); 

var PORT = 12345; 
var HOST = '192.168.1.50'; 
var message = new Buffer('Pinging'); 

var client = dgram.createSocket('udp4'); 
client.send(message, 0, message.length, PORT, HOST, function(err, bytes) { 
    if (err) throw err; 
    console.log('UDP message sent to ' + HOST +':'+ PORT); 
    client.close(); 
}); 

參考:http://www.hacksparrow.com/node-js-udp-server-and-client-example.html

+0

引發的異常感謝您的幫助,但是,我不需要發送消息,只需要從IP 192.168.1.50接收它們端口12345 –

2

不能綁定到遠程服務器地址!無論你的服務器IP是什麼,你都應該綁定到你的一個本地接口。如果要綁定所有本地接口,只需綁定如下:

sock.bind(port); 
+0

那麼我如何創建一個客戶端,它正在等待來自特定服務器的udp dadagram? (服務器中的代碼已經寫入,不會被改變,他正在發送端口12345上的數據和我給出的IP) –

+0

@EfratCohen,你不能。您將監聽發送到此IP:端口的所有數據報。如果數據報不是來自你感興趣的人,你可以跳過它。 – SergeyA