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
Käyttöjärjestelmä, ohjelmointikieli ja ongelma olivat mitkä..?
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.
Haa, kiitos tiedosta Deffi! Tosiaan, unohtui mainita nuo, mutta osasit aavistaa oikein.
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(); }
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|
http://www.codeguru.com/csharp/csharp/
Oliskohan tosta mitään apua. Ainakin tuolla saa selville oman ip:n
Mun Wintoosassa ei toimi Winsocit :/ (XP Home x32)
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(); }
Aihe on jo aika vanha, joten et voi enää vastata siihen.