tags:

views:

164

answers:

2

Hi All,

Is there a way to display the system ip address and port number in a text box that is generated dynamically???

I want the system to put the ip address into a text box according to the machine.

Siddharth

+1  A: 

Your system does not have a port number. Port numbers are a software concept to differentiate different IP or UDP applications that might want to listen for connections on your IP address.

Also, it is quite possible to have more than one IP address. In fact, your system almost always has two if you count the loopback address (127.0.0.1). Even if you don't these days even many consumer PC's have multiple ethernet jacks.

You didn't say you were using Win32 so I don't know that it will be useful to you, but here's some code I wrote once that puts all local IP addresses (loopback excepted) into a an MFC CComboBox. It's a bit more C-ish than I'd like to see these days, but here it is.

size_t const Max_Expected_Addresses = 20; // Something rediculous
unsigned long IPADDRTBL_Size = sizeof(DWORD) + sizeof(MIB_IPADDRROW) * Max_Expected_Addresses;
PMIB_IPADDRTABLE IP_Address_Table = (PMIB_IPADDRTABLE) malloc (IPADDRTBL_Size);
if (GetIpAddrTable (IP_Address_Table, &IPADDRTBL_Size, TRUE) == NO_ERROR) {
    for (DWORD i = 0; i < IP_Address_Table->dwNumEntries; i++) {
        // Skip the loopback.
        if (IP_Address_Table->table[i].dwAddr == 0x0100007f) continue;

        if (m_IP_Address == "") m_IP_Address = String_Address(IP_Address_Table->table[i].dwAddr);
        m_IP_Address_List.AddString (String_Address(IP_Address_Table->table[i].dwAddr));
    };
}

m_IP_Address_List is an MFC control defined as a CComboBox which gets filled in by this snippet. m_IP_Address is a CString tied to an MFC textbox control (IIRC) which I use to store the currently selected (or first found on startup) IP address.

T.E.D.
Thanks for your response buddy, i am using Win 2003 server and how would i b able to display the ip address dynamically to a textbox? is there any custom action in VBscript or c++ ?
His wix tag implies he's using windows, but wix is not for the faint-hearted at the best of times. It's not going to be trivial to accomplish what he wants.
grenade
do u have a solution for this..???
A: 

Since you mentioned a text box, I can only postulate that you are talking about a web browser, and in that case 99.9% of the time you are talking about http and then 99.999% of the time a TCP connection. This means that your connection will have a 4-Tuple consisting of the source ip:port and the destination ip:port. In most cases the port numbers are fairly standard (80) for the destination (client).

Then you get into the very common issues of NAT and the like, so again I think you need to clarify what type of ip address you want. The publicly routable ip address is obtained server side and the LAN address will be obtained from the localhost.

For the more interesting case (publicly routable ip) I would just use a server side script (python, PHP, C, etc...) to read the incoming ip address and then use a little ajax to set the value of the text box. I did something similar for a project and it worked really well. Our client program was written in Python and C but this will give you an idea...

# Returns the client's public IP address (past any NATs)
def get_public_ip():
        return urllib.urlopen('http://ddih.org/ip.php').read().strip()

I think something like set the inner html... from that webpage...

Hope this helps.

gavaletz