Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 01-11-2002, 19:28
Talon
Avatar van Talon
Talon is offline
Ik wil een begin maken met sockets..
Heb een tutorial gedownload die niet echt uitgebreid is..
En daar staat een voorbeeld in, die normaal gesproken te compilen is..
Ik gebruik MS Visual C++ 4.0..

Als ik compile krijg ik deze output:

--------------------Configuration: socket1 - Win32 Debug--------------------
Linking...
whois.obj : error LNK2001: unresolved external symbol _WSACleanup@0
whois.obj : error LNK2001: unresolved external symbol _recv@16
whois.obj : error LNK2001: unresolved external symbol _send@16
whois.obj : error LNK2001: unresolved external symbol _connect@12
whois.obj : error LNK2001: unresolved external symbol _gethostbyname@4
whois.obj : error LNK2001: unresolved external symbol _htons@4
whois.obj : error LNK2001: unresolved external symbol _socket@12
whois.obj : error LNK2001: unresolved external symbol __WSAStartup
whois.obj : error LNK2001: unresolved external symbol _WSAGetLastError@0
Debug/socket1.exe : fatal error LNK1120: 9 unresolved externals
Error executing link.exe.
socket1.exe - 10 error(s), 0 warning(s)

Geen idee wat dit inhoud..

Iemand die me dit kan uitleggen ofzo?
__________________
Napoleon, don't be jealous that I've been chatting online with babes all day | Ugh! Gross! Freakin' idiot!
Met citaat reageren
Advertentie
Oud 01-11-2002, 19:36
Talon
Avatar van Talon
Talon is offline
En uhm.. wat zijn de verschillen tussen socket.h en winsock.h?
In elke handleiding word er over de 1e gesproken.. terwijl ik alleen winsock.h heb..

Snap er niet echt veel van op deze manier..
__________________
Napoleon, don't be jealous that I've been chatting online with babes all day | Ugh! Gross! Freakin' idiot!
Met citaat reageren
Oud 01-11-2002, 21:10
Verwijderd
Iets wat ik een half jaar geleden oid in elkaar flanste:

Code:
//
// Simpel research programma om winsock te beheersen
//
// Marc Schlechter
//
#include <iostream.h>
#include <winsock.h>

// Functiedefinitie met retourneerwaardes
const int WS_RET_GOOD       = 0;
const int WS_RET_BADFILE    = 1;
const int WS_RET_BADSOCKET  = 2;
const int WS_RET_FAILEDCONN = 3;
int WS_Get(
  char* HOSTIP,
  int   HOSTPORT,
  char* HOSTNAME,
  char* HOSTADDR,
  char *LOCALFILE );

// Standaard main
int main(int argc, char* argv[])
{
  cout << "Testing WS_Get... ";

  bool Result = WS_Get(
    "213.239.130.40",
    80,
    "forum.scholieren.com",
    "/cgi-bin/forumdisplay.cgi?action=topics&number=43",
    "dump.txt");

  cout << (Result == WS_RET_GOOD ? "OK" : "FAILED") << "\n";

  getchar();
  return 0;
}

//
// WS_Get: leest gegevens van een host en dumpt deze in een bestand
//
int WS_Get(
  char* HOSTIP,      // IP-Address van host
  int   HOSTPORT,    // Port te openen
  char* HOSTNAME,    // Hostnaam
  char* HOSTADDR,    // Relatief adres van document op host
  char* LOCALFILE )  // Lokaal bestand
{
  // Grootte van buffer
  const int RECVBUF = 1024;

  // Lokale werkdata
  WSADATA ws;
  int     d;
  char    buf[RECVBUF];
  struct  sockaddr_in a;
  SOCKET  s;
  int     ii;

  // Standaard retourneerwaarde
  int RET_CODE = WS_RET_GOOD;

  // Probeer bestand te openen
  FILE* MyF = fopen(LOCALFILE, "wt");
  if(MyF == NULL)
  {
    // Poging tot bestand openen mislukt
    return WS_RET_BADFILE;
  }
  else
  {
    // Winsock opstarten
    d = WSAStartup(0x101, &ws);
    s = socket(AF_INET,SOCK_STREAM, 0);
    if(s == INVALID_SOCKET)
    {
      // Probleem met aanmaken socket
      RET_CODE = WS_RET_BADSOCKET;
    }
    else
    {
      // Voorbereiden verbinding
      a.sin_family = AF_INET;
      a.sin_port = htons(HOSTPORT);
      a.sin_addr.s_addr = inet_addr(HOSTIP);

      // Probeer verbinding te maken met host
      d = connect(s, (struct sockaddr *)&a, sizeof(a));
      if(d == SOCKET_ERROR)
      {
        // Verbinding maken mislukt
        RET_CODE = WS_RET_FAILEDCONN;
      }
      else
      {
        // HTTP Request opbouwen
        sprintf(buf, "GET %s HTTP/1.0 \r\nHost: %s \r\n\r\n",
          HOSTADDR, HOSTNAME);

        // HTTP Request versturen naar host
        send(s, buf, sizeof(buf), 0);

        // Wachten op reactie en ontvangen gegevens wegschrijven
        ii = 1;
        while (ii != 0)
        {
          ii = recv(s, buf, RECVBUF, 0);
          buf[ii] = '\0';
          fwrite(buf, ii, 1, MyF);
        }
      }
    }
    // Lokaal bestand sluiten
    fclose(MyF);
  }

  return RET_CODE;
}
Misschien kun je er iets mee
Met citaat reageren
Oud 01-11-2002, 21:13
Verwijderd
Trouwens: misschien moet jij bij VC++ winsock.lib toevoegen aan je project, zodat deze ingebonden wordt bij het linken. Anders krijg je idd unresolved externals.

*werkt zelf met BCB*
Met citaat reageren
Oud 01-11-2002, 21:15
Talon
Avatar van Talon
Talon is offline
hm ja dank je voor het voorbeeld..
alleen is dat c++..

maar goed..

ik zie erin staan:
d = WSAStartup(0x101, &ws);

weet je het verschil tussen:
WSAStartup() en _WSAStartup() toevallig?

wellicht dat het iets normaals is, maar ik kom het verder niet tegen..
__________________
Napoleon, don't be jealous that I've been chatting online with babes all day | Ugh! Gross! Freakin' idiot!
Met citaat reageren
Oud 01-11-2002, 21:18
Talon
Avatar van Talon
Talon is offline
Citaat:
******** schreef:
Trouwens: misschien moet jij bij VC++ winsock.lib toevoegen aan je project, zodat deze ingebonden wordt bij het linken. Anders krijg je idd unresolved externals.

*werkt zelf met BCB*
hm.. uh.. ja.. dat is het..
damn..
*schaam*
__________________
Napoleon, don't be jealous that I've been chatting online with babes all day | Ugh! Gross! Freakin' idiot!
Met citaat reageren
Oud 01-11-2002, 21:43
Verwijderd
Citaat:
Talon schreef:
hm ja dank je voor het voorbeeld..
alleen is dat c++..
Dan bouw je het om

Citaat:
ik zie erin staan:
d = WSAStartup(0x101, &ws);

weet je het verschil tussen:
WSAStartup() en _WSAStartup() toevallig?
Ik weet alleen maar dat het een macro is. Met name om te bepalen welke versie van het winsock protocol gebruikt wordt en voor initialisatie.

_WSAStartup() is het symbool ervan en geen echte functie afaik. Ik kom het tot nu toe alleen bij het linken tegen, nog nooit in code gezien
Met citaat reageren
Oud 01-11-2002, 22:07
Chimera
Avatar van Chimera
Chimera is offline
"unresolved externals" betekent over 't algemeen gewoon dat je een .lib niet meecompiled. Hoogstwaarschijnlijk staat in de tut ook wel welke libs je nodig hebt.
Met citaat reageren
Oud 01-11-2002, 22:22
Verwijderd
Citaat:
Chimera schreef:
"unresolved externals" betekent over 't algemeen gewoon dat je een .lib niet meecompiled. Hoogstwaarschijnlijk staat in de tut ook wel welke libs je nodig hebt.
Een unresolved external is precies wat het is: een referentie naar een externe variabele of functie die de linker niet terug kan vinden. Dit wordt idd veroorzaakt door het weglaten van modules bij het linken. Niet alleen bij .libs, maar ook gewone .obj bestanden.
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar

Soortgelijke topics
Forum Topic Reacties Laatste bericht
Software & Hardware [Moederbord] Kapot, nieuwe kopen?
Harrie
23 01-04-2004 21:08
Software & Hardware [c++]controleren of een socket data bevat
Dr HenDre
47 03-08-2003 16:03
Software & Hardware iedeen voor c++
Dr HenDre
14 18-03-2003 13:33
Software & Hardware [Programmeren] Browser Game
twim
66 25-02-2003 20:10
Software & Hardware [C++] chat progje...
twim
2 19-02-2003 12:45
Software & Hardware [Linux] PCI: Cannot allocate resource region
F10®!@n
17 10-01-2002 15:56


Alle tijden zijn GMT +1. Het is nu 11:41.