bind()

Status
Niet open voor verdere reacties.

erikiej1

Gebruiker
Lid geworden
29 apr 2008
Berichten
138
Ik ben sinds kort weer begonnen met C++, maar moet nog even de draad weer oppakken:rolleyes:
Ik was met dit programmaatje bezig, een server voor een klein spelletje dat ik wou maken:

[cpp]#include <iostream>
#include <winsock2b.h>

using namespace std;

void Startup( SOCKET S );

int main()
{
WSADATA w; WORD v = MAKEWORD( 2,2 );
if ( WSAStartup( v, &w ) != NO_ERROR )
{ cout << "Winsock2 is not available.\n";
cin.get();
exit(1);
}

SOCKET S;
if ( S = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ) == INVALID_SOCKET )
{ cout << "Socket could not be made.\n";
cin.get();
exit(1);
}


sockaddr_in Client;
Client.sin_family = AF_INET;
Client.sin_port = htons( 4224 );
Client.sin_addr.s_addr = htonl( INADDR_ANY );

if ( bind( S, (SOCKADDR*)&Client, sizeof((SOCKADDR*)&Client) ) == SOCKET_ERROR )
{ cout << "Socket could not be bound.\n";
cin.get();
exit(1);
}


if ( listen( S, 1 ) == SOCKET_ERROR )
{ cout << "Socket could not be set to listening mode.\n";
cin.get();
exit(1);
}

cout << "Wachten op inkomende verbindingen...";

if( accept( S, NULL, NULL ) == SOCKET_ERROR ) { cout << "\nInkomende verbinding kon niet worden geaccepteerd."; }

else { cout << "Client binnengekomen."; }

cin.get();
}[/cpp]

Maar als ik 'em run, krijg ik het bericht : "Socket could not be bound." , betekent dat bind()
SOCKET_ERROR heeft gereturned. Weet iemand hoe dit kan?
 
Laatst bewerkt door een moderator:
Het kan zijn dat de poort die je gebruikt al in gebruik is?
Het kan ook zijn dat je als gebruiker niet genoeg rechten hebt om een socket te openen. Dit gebeurd nogal een sop Vista/7 heb ik me laten vertellen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan