Svish Skrevet 5. april 2006 Del Skrevet 5. april 2006 hjeelp, jeg blir sprø. ingen tvil om at jeg liker meg best i java... noen som kan hjelpe meg med mitt lille problem? jeg har denne klassen: #pragma once //#define WIN32_MEAN_AND_LEAN #include <winsock2.h> #include <windows.h> #include "Exception.h" class HttpWorker { public: static const int REQ_WINSOCK_VER = 2; // Minimum winsock version required static const int BUFFER_SIZE = 128; // Buffersize for send and recv HttpWorker(void); HttpWorker(char* address, const int port); ~HttpWorker(void); private: char server_name[]; int initWinsock(); }; det jeg sliter med (tro det eller ei) er hva server_name bør være, og hvordan jeg får lagret verdien til address i konstruktoren til server_name. altså address skal være foreksempel "www.hardware.no" og det skal da lagres i server_name. (det som står der nå funker dårlig...) cluet er at den HttpWorker klassen skal få inn en nettsideaddresse, som den skal kunne koble seg til. og så sende og motta data via den. (socket programmering). det skal vel egentlig være irrelevant for den om den får en IP-addresse eller et nettside-navn, men det er jeg ikke helt sikker på hvordan å løse enda....(så om noen har noen tips der å, tar jeg de mer enn gjerne imot ) Lenke til kommentar
Mr.Garibaldi Skrevet 5. april 2006 Del Skrevet 5. april 2006 Hvis du skal begynne med sockets, så kan jeg anbefale denne guiden. Den forklarer alt på en ganske lett-forståelig måte, og gjør at du slipper å spørre om alt mulig. Du finner akkurat det du spør om her, men du får bedre utbytte av å lese den tvers igjennom. Den er ikke så lang, og du sparer deg for mye hodebry. Lenke til kommentar
Svish Skrevet 5. april 2006 Forfatter Del Skrevet 5. april 2006 har fulgt denne guiden her: Madwizard så på den du linka til først, men synes den var så stor og slitsom. men uansett, har fått både connect og sockets og send og recv til å fungere. cluet er at jeg må prøve å strukturere det litt i klasser og slikt (da læreren neppe blir særlig glad for en lang main-metode til en hel nettleser altså er det hvordan å lagre det en får inn som peker på en grei måte jeg lurer på mulig jeg burde vært litt klarere der, hehe Lenke til kommentar
kjetil7 Skrevet 5. april 2006 Del Skrevet 5. april 2006 (endret) C++ har en egen streng-klasse som du bør bruke. Å lage arrays av char er ikke å anbefale hvis det strengt tatt ikke er nødvendig. Prøv dette: #include <string> // ... private: std::string _serverName; int _initWinsock(); }; For å få tilgang til c-strengen i std::string skriver du: const char* cstr = _serverName.c_str(); For å sette strengen bruker du = operatoren eller noen av medlemsmetodene som assign(), append() o.l. Constructoren kan se slik ut: HttpWorker::HttpWorker(const char* address, int port) : _serverName(address), _port(port) { } ... som er det samme, men en bedre og optimalisert variant av: HttpWorker::HttpWorker(const char* address, int port) { _serverName = address; _port = port; } Endret 5. april 2006 av kjetil7 Lenke til kommentar
Svish Skrevet 5. april 2006 Forfatter Del Skrevet 5. april 2006 aha, men hvis det bare er å skrive c_str() for å få ut char[] representasjonen så er det jo egentlig ikke så mye spørsmål takker! did not know that! da kommer jeg meg kanskje videre, hehe Lenke til kommentar
Svish Skrevet 5. april 2006 Forfatter Del Skrevet 5. april 2006 _serverName(address) vil da si ¨å kalle string konstruktoren til _serverName med address da? en annen liten ting som jeg har vært lit usikker på. new og delete. skal delete kun brukes når en bruker new? eller er det andre ganger en må bruke de å? Lenke til kommentar
kjetil7 Skrevet 5. april 2006 Del Skrevet 5. april 2006 (endret) Ja, det er riktig. _serverName(address) kaller constructoren som tar const char* til std::string. Hvis du bruker den andre varianten kaller du først standard-constructoren og deretter = operatoren som dermed er tregere. delete skal kun brukes på det du bruker new til. Det samme gjelder delete[] og new[]. Eks: // new og delete int *myIntA = new int; delete myIntA; // new[] og delete[] int *myIntB = new int[512]; delete [] myIntB // delete myIntB; // DETTE ER FY FY Ellers er det verdt å nevne at det ikke er farlig å kalle delete på en null-peker: int *nullPtr = 0; delete nullPtr; // ok Edit: et par små leifer Endret 5. april 2006 av kjetil7 Lenke til kommentar
Svish Skrevet 5. april 2006 Forfatter Del Skrevet 5. april 2006 supert! du er brilliant Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå