PDA

View Full Version : very simple question


starboarder2001
07-14-2003, 09:25 PM
in c++ what function will return your IP address? I have searched for it but no luck. I figured you guys would know it off the top of your heads.

Dia Kharrat
07-14-2003, 09:53 PM
If you're using windows, you can get your IP address using WinSock. You can't get the IP address in "C/C++". You'll have to use a library.


* * *#include <winsock2.h>

* * *WORD wVersionRequested;
* * *WSADATA wsaData;
* * *char name[255];
* * *CString ip;
* * *PHOSTENT hostinfo;
* * *wVersionRequested = MAKEWORD( 2, 0 );

* * *if ( WSAStartup( wVersionRequested, &wsaData ) == 0 )
* * *{

* * * * * *if( gethostname ( name, sizeof(name)) == 0)
* * * * * * * * *if((hostinfo = gethostbyname(name)) != NULL)
* * * * * * * * * * * *ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
* * * * * *
* * * * * *WSACleanup( );
* * *}


don't forget to link with Wsock32.lib

MA]Mestre
07-15-2003, 02:10 AM
if u use apex's code ( into VC6.0 ), and u need #include <windows.h> u must put #include <winsock2.h> before windows include. Otherwise the compiler found data types repeated. ;)

starboarder2001
07-19-2003, 12:12 AM
I have another question.... :)

I am using WinSock.

When i call: recv() it waits at that line until it is sent something. Is there a way i can set the function to time out if nothing is sent after a few secs? I am writing a simple chat program..and i need it to check if something was recieved..and if it didnt then just contenue with the program.

//take input
//send input
//recieve text //i dont need it to wait here until it is sent something :\
//display text

Obunako
07-19-2003, 03:47 AM
Using WSAAsyncSelect u can recive a message to a window procedure when u get some data, or other network event, about u socket. Try to use it !!! :nod:

DrunkenCoder
07-21-2003, 09:28 AM
or have a look at select() ...