WinSock32: problemi con la creazione del socket.

di il
2 risposte

WinSock32: problemi con la creazione del socket.

Salve a tutti, mi sto approcciando per la prima volta alle socket, volevo creare 2 semplici programmi (Server e Client) che tramite protocollo TCP si scambiassero un saluto. Purtroppo ho riscontrato dei problemi nella creazione della variabile SOCKET che contiene le specifiche sul tipo di indirizzo(es. IPV4 o IPV6), Il tipo di protocollo di trasporto(es. SOCK_STREAM o SOCK_DGRAM) e il protocollo da utilizzare(es. TCP o UDP). Il problema si pone quando pongo la condizione per controllare che la variabile sia giusta, ciò tramite una condizione IF: if(sock == INVALID_SOCKET). Quindi se la condizione si verifica la socket è invalida, però non riesco a capire dove sia il problema, ho ricontrollato più e più volte senza concludere nulla.

Questo è il codice completo del Server:

#include <iostream>
#include <winsock2.h>
#include <windows.h>

using namespace std;

int main()
{
	WSADATA WSAData;
	SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	sockaddr_in saddr;
	saddr.sin_family = AF_INET;
	saddr.sin_addr.s_addr = inet_addr("127.0.0.1");	//indirizzo locale
	saddr.sin_port = htons(8000); //Porta
	SOCKET client;
	char sbuff [] = "Benvenuto client!";
	char cbuff [64];
	ZeroMemory(cbuff,64);
	
	
	
	if(WSAStartup (MAKEWORD(2,2), &WSAData))
	{
		cout<<"Errore nell'inizializzazione delle socket..."<<endl;
		return 0;
	}
	
	
	
	if(sock == INVALID_SOCKET)
	{
		cout<<"Errore nella creazione del socket... "<<WSAGetLastError()<<endl;
		return 0;
	}
	
	
	
	if (bind(sock, (sockaddr*) &saddr, sizeof(sockaddr_in)))
	{
		cout<<"Errore nel BIND delle socket..."<<endl;
		return 0;
	}
	
	listen(sock,SOMAXCONN);
	client = accept(sock, NULL, NULL);
	send(client, sbuff, sizeof (sbuff), 0);
	recv(client, cbuff, sizeof (cbuff), 0);
	
	
	closesocket(client);
	closesocket(sock);
	WSACleanup();
	
	return 0;
}
Questo è l'OUT che ottengo eseguendo il programma:

Errore nella creazione del socket... 0
Grazie in anticipo!!!

PS. Come IDE utilizzo DEV-C++, lo so che è un IDE morto ma ci sono affezionato e non credo che il problema sia nell'IDE.
PSS. NON mi sono dimenticato di linkare la WS2_32.Lib.

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte