Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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

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 :whistle::p

 

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

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 av kjetil7
Lenke til kommentar

_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

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 av kjetil7
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...