Konstruktor Socket
-
Hallo zusammen. Ich habe ein Problem mit meinem Konstruktor beim Bau eines Sockets.
Ich habe folgende Header Datei:class dgSocket { public: /// the states a socket can be in. enum sockstate_type { LISTENING, ACCEPTED, CONNECTED, INVALID }; /// default constructor dgSocket(); // get information about the socket state bool IsConnected() { return (m_SocketState == CONNECTED || m_SocketState == ACCEPTED); }; bool IsListening() { return (m_SocketState == LISTENING); }; /// constructor for a client dgSocket(const char* pIpAddress, int nPort); /// constructor for a server dgSocket(int nPort, bool bLocal = false); /// destructor virtual ~dgSocket();USW.
Und ich will jetz einfach des DgSocket für den Client aufrufen. Irgendwie steh ich total auf dem Schlauch. Mein Client-Code:#include "stdafx.h" #include <stdio.h> #include <iostream> #include "dgSocket.h" #include "Client.h" int main( int argc, char* argv[]){ dgSocket m_dgSocket; m_dgSocket.dgSocket(127.0.0.1, 3011); cvvWaitKey(0); return 0; }Irgendwei verstehe ich auch nicht ganz, ob ich jetzt dem Client eine IP oder einen Port mitgeben muss.
Ihr könnt mir doch bestimmt helfen.Vielen Dank
EvA
-
Du mußt die Konstruktor-Parameter direkt bei der Variablen-Definition angeben:
int main( int argc, char* argv[]) { dgSocket m_dgSocket("127.0.0.1", 3011); if(!m_dgSocket.IsConnected()) cout<<"Fehler bei Verbindung"<<endl; else //Verbindung steht -> tausche Daten aus }PS: Und ein char* Literal solltest du in Anführungszeichen setzen

-
Vielen vielen Dank, es funktioniert !!
Und wie mache ich das jetzt auf Server-Seite? Etwa so?
int main( int argc, char* argv[]) { dgSocket m_dgSocket(3011,true); if(!m_dgSocket.Listening()) cout<<"Fehler bei Server"<<endl; else //accept cvvWaitKey(0); return 0; }Eigentlich bekommt der Server doch aber keinen Port übergeben, oder?
Vielen Dank
Eva
-
Ja, das würde so funktionieren (wenn deine Funktionen das richtige machen).
Eigentlich bekommt der Server doch aber keinen Port übergeben, oder?
Doch, bekommt er - woher soll er sonst wissen, was er abhören soll? (und außerdem verlangt der entsprechende Ctor eine Portnummer als Parameter)
-
Super, der Code ist Korrekt. Vielen Dank. Ich habs verstanden.
Allerdings kommen jetzt auf Server als auch auf Client Seite 2 Linker Fehler:Client.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall dgSocket::~dgSocket(void)" (??1dgSocket@@UAE@XZ) referenced in function _main
Client.obj : error LNK2019: unresolved external symbol "public: __thiscall dgSocket::dgSocket(char const *,int)" (??0dgSocket@@QAE@PBDH@Z) referenced in function _main
Debug/Client.exe : fatal error LNK1120: 2 unresolved externalsIch habe allerdings meine Libs ordentlich verlinkt. Was kann mir denn da fehlen?
Vielen Dank
Eva
-
Hast du auch eine "dgSocket.cpp", in der die Quelltexte zu deinen Konstruktoren und zum Destruktor enthalten sind? Wenn nein, solltest du sie schleunigst schreiben
