2017-11-22 1 views
0

를 가져옵니다 :나는이 순 TCP 서버가 클라이언트의 IP TCP 그물 노드

private startTCPServer() { 
    const socket = net.createServer(function(socket_object){ 
     socket_object.on("data", (data) => { 
      console.log(data); 
     }); 
     socket_object.on("end", socket_object.end); 
     socket_object.on("error", (err: any) => { 
      console.log(err); 
     }); 
    }); 
    socket.listen(this.TCP_PORT, this.ADDRESS,() => { 
     console.log('listening...'); 
    }); 
} 

가 어떻게이는 "data" 이벤트에 도달 할 때 주로이 서버에 연결하는 클라이언트의 IP를받을 수 있나요?

답변

1

귀하의 connectListener (주어진 기능이 createServer)은 net.Socket 유형의 개체 인 socket_object이됩니다. 원격 호스트의 주소를 가지고있는 remoteAddress 속성이 있습니다.

0

그냥 보완하기 위해, 당신은 "data" 이벤트 내부 remoteAddress를 사용하려는 경우, 예를 들어, 다음을 수행하십시오

private startTCPServer() { 
    const wrapper = (remoteAddress: string) => { 
     return (data: any) => { 
      console.log(data, remoteAddress); 
     } 
    }; 
    const socket = net.createServer(function(socket_object){ 
     socket_object.on("data", wrapper(socket_object.remoteAddress)); 
     socket_object.on("end", socket_object.end); 
     socket_object.on("error", (err: any) => { 
      console.log(err); 
     }); 
    }); 
    socket.listen(this.TCP_PORT, this.ADDRESS,() => { 
     console.log('listening...'); 
    }); 
}