Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Oman IP-osoitteen selvitys

Sivun loppuun

Macro [12.10.2009 18:23:30]

#

Terve tännekkin alueelle!

Tarvitsisi saada aina IP osoite tietoon, kun ohjelma käynnistyy tietokoneen mukana. Ohjelman pitäisi ottaa aika tietoon käynnistyshetkestä, ja siitä kun tietokone sammutetaan.
Kun nämä on tiedossa (siis käynnistysaika ja ip) niin tieto kirjoitetaan tiedostoon c:\loki.txt. Kun tietokone sammutetaan, niin se kirjoittaa myös sammumisajan sinne.

Tiedoston kirjoitus pitäisi näyttää tältä

[käynnistysaika1 tähän]
Käynnistysaika:   käynnistysaika1 tähän
Sammuttamisaika:  sammumisaika1 tähän
Ip-osoite:        ip-osoite1 tähän

[käynnistysaika2 tähän]
Käynnistysaika:   käynnistysaika2 tähän
Sammuttamisaika:  sammumisaika2 tähän
Ip-osoite:        ip-osoite2 tähän

[käynnistysaika3 tähän]
Käynnistysaika:   käynnistysaika3 tähän
Sammuttamisaika:  sammumisaika3 tähän
Ip-osoite:        ip-osoite3 tähän

RQ [12.10.2009 22:13:44]

#

Käyttöjärjestelmä, ohjelmointikieli ja ongelma olivat mitkä..?

Deffi [12.10.2009 23:06:01]

#

Polusta päätellen Windows, alueesta päätellen C/C++ ja pitäisi saada IP osoite tietoon.

Onnistuneepi kai kun ensiksi selvittää paikallisen koneen hostnamen gethostname():lla ja sitten repii siitä hostent-struktuurin irti gethostbyname():lla.

Macro [13.10.2009 08:27:02]

#

Haa, kiitos tiedosta Deffi! Tosiaan, unohtui mainita nuo, mutta osasit aavistaa oikein.

Metabolix [13.10.2009 11:48:46]

#

Tiedostoon voit kirjoittaa ofstream-oliolla (ja lukeminen vastaavasti onnistuu ifstream-oliolla).

#include <fstream>

int main() {
  std::ofstream ulos("loki.txt", std::ios::app);
  // app = append = jatketaan loppuun

  ulos << "Tiedostovirrat toimivat cin- ja cout-olioiden tavoin." << std::endl;
  // Tiedosto sulkeutuu, kun olio tuhotaan lohkon (tässä main-funktion) lopussa.
}
#include <fstream>

int main() {
  std::ofstream ulos;
  ulos.open("loki.txt");
  ulos << "Tiedoston voi avata ja sulkea erikseenkin." << std::endl;
  ulos << "Kun std::ios::app tai muu valinta puuttuu, oletus" << std::endl
       << "on std::ios::out, eli tiedosto tyhjennetään ensin." << std::endl;
  ulos.close();
}

Macro [13.10.2009 18:39:28]

#

Ohops, tuli hätäiltyä aiemmin tuon Deffin avustuksen kanssa. Se antaakin erroria. Mitä pitäisi linkittää (#include...) tiedostoon?

\C++\IP\IP\main.cpp|6|error: `gethostname' was not declared in this scope|

vehkis91 [13.10.2009 18:56:39]

#

http://www.codeguru.com/csharp/csharp/cs_network/article.php/c6045/

Oliskohan tosta mitään apua. Ainakin tuolla saa selville oman ip:n

Macro [13.10.2009 19:00:32]

#

Mun Wintoosassa ei toimi Winsocit :/ (XP Home x32)

Deffi [13.10.2009 19:09:31]

#

Toimiipas.

Koodin alkuun #include <winsock2.h> ja linkkerille -lwsock32, jos käytät MinGW. Muista myös alustaa winsock.

WSADATA ws;
if(WSAStartup(MAKEWORD(1,1), &ws) == 0)
{
    pälä pälä pälä

    WSACleanup();
}

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta