Oppure

Loading
25/07/21 11:00
Valcars92
Salve a tutti e come sempre eccomi a darvi fastidio XD....
Stavo provando a creare un client/server in c++ e fino a qui tutto ok funziona correttamente ma il problema mi arriva qunado cerco di implementare winsock in una classe... quando provo a dividere le funzioni per creare la connessione mi da errore di override della SOCKET vi mostro come ho provato a fare la classe.... sicuramente sarà sbagliata però voglio capire dove sbaglio e come risolvere cmq vi posto il sorgente

Main.cpp
#include "Network.h"
#include <iostream>;

int main()
{
	Network network;

	network.Connection();

	system("PAUSE");
	return 0;
}


==================
Classe Network
=================

Network.h
class Network
{
public:
	
	
	void Connection();

private:
	SOCKET serverSocket;
	
	int tmpSocket;
	struct sockaddr_in server;
	

	 void initSoket();
	 void createSocket();
	 void closeSocket();

};


Network.cpp
#include "Network.h"
#include<winsock2.h>
#include<stdio.h>

void Network::Connection()
{
	
	initSoket();
	createSocket();

	//Connect to remote server
	if (connect(tmpSocket, (struct sockaddr*)&server, sizeof(server)) < 0)
	{
		puts("connect error");
		return;
	}

	puts("Connected");

	//TODO -----------------------
	//Torna al Server.cpp
}

void Network::initSoket()
{
	WSADATA wsa;

	printf("\nInitialising Winsock...");
	if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
	{
		printf("Failed. Error Code : %d", WSAGetLastError());
		return;
	}

	printf("Initialised.\n");
}

void Network::createSocket()
{
	

	//Create a socket
	if ((serverSocket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
	{
		printf("Could not create socket : %d", WSAGetLastError());
	}

	printf("Socket created.\n");

	//Prepare the sockaddr_in structure
	server.sin_addr.s_addr = inet_addr("127.0.0.1");
	server.sin_family = AF_INET;
	server.sin_port = htons(11000);

	
}

void Network::closeSocket()
{
	closesocket(serverSocket);
	WSACleanup();
}


Spero che non mi bestemmiate addosso XD cmq attendo vostre risposte e grazie in anticipo :)
Ultima modifica effettuata da Valcars92 25/07/21 11:09
25/07/21 14:13
nessuno
La linea

#include <winsock2.h>

spostala da Network.cpp a Network.h

E poi nel Network.cpp manca anche una

#pragma comment(lib, "Ws2_32.lib";)

per la libreria

Prima di avventurarti in codice complesso, perché non parti dalle basi che, evidentemente, ti mancano?
Altrimenti ti fermerai ogni momento e non capirai nulla dalle correzioni del forum.

La programmazione C++ va studiata sui libri per il tempo necessario, non copiando incollando codice con le indicazioni di un forum.

P.S. Perché cominciare dai socket quando dovresti studiare le basi??
Vuoi iniziare a scrivere un programma con i socket (magari qualcosa tipo "controllo remoto del PC" o altre sciocchezze simili)? Non perdere il tuo tempo, studia le cose serie...

Fra l'altro potresti utilizzare librerie apposite del C++ senza dover riscrivere tutto. Ad esempio esiste questa

renenyffenegger.ch/notes/development/languages/C-C-plus-plus/Socket_cpp/…

e mille altre. Oltre a quelle inserite in MFC ... CSocket, CAsyncSocket e tante altre.
Ultima modifica effettuata da nessuno 26/07/21 7:21
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.