2016-10-08 6 views
0

ユーザーのIPを取得する方法を知りたい場合は、サーバーn socket.ioに接続します。私はこのような接続アドレスとポートを記録することになっているこのコードを使用して試してみました:socket.ioで接続のIPを取得する1.4.5

var io = require('socket.io')(serv, {}); 
 
io.sockets.on('connection', function(socket) { 
 
    var address = socket.handshake.address; 
 
    console.log('New connection from ' + address.address + ':' + address.port); 
 
    socket.on('request', function(data) { 
 
    console.log('Request Sent') 
 
    length = data.length 
 
    if (data.request == 'sessionID') { 
 
     socket.emit('sendSessionID', { 
 
     id: generateSessionID(length) 
 
     }); 
 
     console.log('Sent session ID') 
 
    } 
 
    if (data.request == 'players') { 
 

 
    } 
 
    }); 
 
});
address.addressは未定義とaddress.portと同じですが、私はこのコードを実行します。では1.4.5を使用しているときに、どのようにIPとポートを取得する必要がありますか?私は新しく更新されたものは見つけられません。

答えて

2

IPアドレスはsocket.handshake.addressで、socket.handshake.address.addressではありません。


これのどれもsocket.ioで文書化していると思わないが、あなたは、リモートIPアドレスおよびこれらとリモートポートを取得することができます:

socket.request.connection.remoteAddress 
socket.request.connection.remotePort 

私はsocket.ioサーバに接続私のLAN上の他のコンピュータから、私は2つの設定上記のものの中からこれらの出力を参照してください。

::ffff:192.168.1.56 
51210 

これは正しくあなたのIPアドレスと自分のSERVに接続しているリモートコンピュータのポートを与えていますエル。 IPアドレス::ffff:192.168.1.56は、IPv4マップアドレスです。一部のシステムでは、そのアドレス形式を処理する必要があります。

+0

どのようにしてポートを取得できますか?また、アドレスは:: ffffとして表示されます。次にipまたは時には単に::と表示されます。何が起きているのかわかりません。 – McMatt

+0

@McMatt - socket.ioのどこにポートがあるのか​​わかりません。入ってくるポートは、あなたのサーバーが何を聞いているのかは明らかです。あなたがIPアドレスのために見ているのはおそらくlocalhostのためのIPv6形式です。ローカルホストではなく外部IPから接続するときに試してください。 – jfriend00

+0

@McMatt - IPv4からIPv6のアドレス形式に関するいくつかの情報があります:[ハイブリッドIP記法:: ffff:192.168.1.4はいつ適切でしょうか?](http://stackoverflow.com/questions/5861107/when-is-the -hybrid-ip-notation-ffff192-168-1-4-appropriate)を使用します。 – jfriend00

関連する問題