0

We are in a situation to get client Local IP (not global ip) to be retrieved through ASP.Net Application.

We found that it is not possible to get this through server, so we had tried to achieve this with

$(document).ready(function () {
    $.get('http://jsonip.com', function (res) {
        $('p').html('IP Address is: ' + res.ip);
    });
});

but we are getting Global IP, we need local ip address, can anyone help us with a solution, thanks in advance.

Vicky S
  • 762
  • 4
  • 16
  • Check this answer: https://stackoverflow.com/questions/20194722/can-you-get-a-users-local-lan-ip-address-via-javascript – Tarik Tutuncu Dec 10 '18 at 06:18

1 Answers1

1

In HTML5 it turns out, the recent WebRTC extension of HTML5 allows javascript to query the local client IP address. A proof of concept is available in below snippet

// NOTE: window.RTCPeerConnection is "not a constructor" in FF22/23
var RTCPeerConnection = /*window.RTCPeerConnection ||*/ window.webkitRTCPeerConnection || window.mozRTCPeerConnection;

if (RTCPeerConnection) (function () {
    var rtc = new RTCPeerConnection({iceServers:[]});
    if (1 || window.mozRTCPeerConnection) {      // FF [and now Chrome!] needs a channel/stream to proceed
        rtc.createDataChannel('', {reliable:false});
    };
    
    rtc.onicecandidate = function (evt) {
        // convert the candidate to SDP so we can run it through our general parser
        // see https://twitter.com/lancestout/status/525796175425720320 for details
        if (evt.candidate) grepSDP("a="+evt.candidate.candidate);
    };
    rtc.createOffer(function (offerDesc) {
        grepSDP(offerDesc.sdp);
        rtc.setLocalDescription(offerDesc);
    }, function (e) { console.warn("offer failed", e); });
    
    
    var addrs = Object.create(null);
    addrs["0.0.0.0"] = false;
    function updateDisplay(newAddr) {
        if (newAddr in addrs) return;
        else addrs[newAddr] = true;
        var displayAddrs = Object.keys(addrs).filter(function (k) { return addrs[k]; });
        document.getElementById('list').textContent = displayAddrs.join(" or perhaps ") || "n/a";
    }
    
    function grepSDP(sdp) {
        var hosts = [];
        sdp.split('\r\n').forEach(function (line) { // c.f. http://tools.ietf.org/html/rfc4566#page-39
            if (~line.indexOf("a=candidate")) {     // http://tools.ietf.org/html/rfc4566#section-5.13
                var parts = line.split(' '),        // http://tools.ietf.org/html/rfc5245#section-15.1
                    addr = parts[4],
                    type = parts[7];
                if (type === 'host') updateDisplay(addr);
            } else if (~line.indexOf("c=")) {       // http://tools.ietf.org/html/rfc4566#section-5.7
                var parts = line.split(' '),
                    addr = parts[2];
                updateDisplay(addr);
            }
        });
    }
})(); else {
    document.getElementById('list').innerHTML = "<code>ifconfig | grep inet | grep -v inet6 | cut -d\" \" -f2 | tail -n1</code>";
    document.getElementById('list').nextSibling.textContent = "In Chrome and Firefox your IP should display automatically, by the power of WebRTCskull.";
}
Your network IP is: <h1 id=list>-</h1>
Roshan Patil
  • 196
  • 7
  • Thank you so much, is this browser, os independant?, this is working only in Chrome – Vicky S Dec 10 '18 at 06:30
  • Yes, Its works in browsers that support WebRTC (Chrome and Firefox). – Roshan Patil Dec 10 '18 at 06:33
  • I suggest that we could check the link below https://social.technet.microsoft.com/Forums/en-US/61fb2e7e-0bf8-4b64-b7fd-1e68aaf5aaa5/access-client-local-ip-address-in-ie?forum=ieitprocurrentver – Roshan Patil Dec 10 '18 at 06:42