2016-10-08 3 views
0

사용자 n가 서버 n socket.io에 연결할 때 사용자 IP를 얻는 방법을 알고 싶습니다. 나는이 같은 연결 주소와 포트를 기록하도록되어이 코드를 사용하여 시도했다 :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.address이 아니라 socket.handshake.address입니다.


이의

비록 없음이 socket.io에 설명 할 나타납니다 , 당신은 이들과 함께 원격 IP 주소와 원격 포트 얻을 수 있습니다 : 나는 socket.io 서버에 연결할 때

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

::ffff:192.168.1.56 
51210 

것은이 올바르게 당신에게 IP 주소와 SERV에 연결하는 원격 컴퓨터의 포트를주고있다 : 내 LAN에있는 다른 컴퓨터에서, 나는 두 가지 설정 위의 것과 이러한 결과를 볼 수 어. IP 주소 ::ffff:192.168.1.56은 IPv4 매핑 된 주소입니다. 일부 시스템에서는 해당 주소 양식을 처리해야합니다.

+0

그러면 포트를 어떻게 얻을 수 있습니까? 또한 주소가 다음과 같이 출력됩니다 :: ffff : 다음 ip 또는 때로는 그냥 출력됩니다 :: 1 무슨 일이 일어나고 있는지 잘 모르겠습니다. – McMatt

+0

@McMatt - socket.io에서 포트를 찾을 수있는 곳을 모르겠습니다. 들어오는 포트는 서버가 수신하는 포트입니다. IP 주소를보고있는 것은 아마도 localhost를위한 IPv6 양식 일 것입니다. localhost가 아닌 외부 IP에서 연결을 시도하십시오. – jfriend00

+0

@McMatt - IPv6 주소 형식을 통한 IPv4에 대한 정보는 다음과 같습니다. [하이브리드 IP 표기법은 언제 있습니까 :: ffff : 192.168.1.4가 적절한가요?] (http://stackoverflow.com/questions/5861107/when-is-the -hybrid-ip-notation-ffff192-168-1-4- 해당). – jfriend00