Sockets reden nicht miteinander
-
Kalua vllt. erstmal Grundlagen lernen bevor du dich an Sockets wagst.
-
ok... ich muss den Compiler umstellen.
Laut Handbuch geht das mit /J (Compiler Options). Leider kann ich damit garnichts anfangen.
-
Wie Any schon sagte: Grundlagen
Es fehlen einige Klammern.
-
ich habe jetz die Klammern gesetzt. Und richtig: Grundlagen fehlen, aber wie sagt man so schön: Learning by doing. Vielleicht könnt ihr mir trotzdem helfem. Ist doch bestimmt ein klacks für euch

int main( int argc, char* argv[]) { while (1){ dgSocket m_dgSocket(3011,true); m_dgSocket.listen(3011,false,100); if(!m_dgSocket.IsListening()){ cout<<"Fehler bei Server"<<endl;} else {cout<<"is verbtunden"<<endl; cout<<"warten auf den Client..."<<endl; if (!m_dgSocket.isAcceptable()){ cout<<"Verbindung ist fehlgeschlagen"<<endl; else { m_dgSocket.accept(); cout<<"Client verbunden"<<endl;}}} } cvvWaitKey(0); return 0; }Client:
int main( int argc, char* argv[]) { dgSocket m_dgSocket("127.0.0.1", 3011); // m_dgSocket.connect("127.0.0.1", 3011); if(!m_dgSocket.IsConnected()) cout<<"Fehler bei Verbindung"<<endl; else if(3){ cout<<"ist verbunden"<<endl; m_dgSocket.write("test",2);} cvvWaitKey(0); return 0; }Wäre supi !!!
-
CStoll (off) schrieb:
Das Problem ist: char = signed char bei deinem Compiler - deshalb haben String-Literale den Typ "signed char*". Also entweder du änderst die write-Funktion auf "write(const char* pChars,int nNmuber);", dann kann der Parameter zugeordnet werden, oder du suchst in der Dokumentation des Compilers heraus, wie man char umstellt auf unsigned.
Warum nicht einfach ein cast benutzen?
m_dgSocket.write(reinterpret_cast<unsigned char *>("test"),2);@kalua31
Was ist denn dgSocket für eine Klasse?mfg.
-
dgSocket
class dgSocket { public: enum sockstate_type { LISTENING, ACCEPTED, CONNECTED, INVALID }; dgSocket(); bool IsConnected() { return (m_SocketState == CONNECTED || m_SocketState == ACCEPTED); }; bool IsListening() { return (m_SocketState == LISTENING); }; //Client dgSocket(const char* pIpAddress, int nPort); //Server dgSocket(int nPort, bool bLocal = false); /// destructor virtual ~dgSocket(); bool connect(const char* pIpAddress,int nPort); bool listen(int nPortA, bool bLocal = false, int nBacklogA = 100); dgSocket* accept(); virtual int write(const unsigned char* pChars,int nNumber);USW
-
Und die Implementierungen oder eine Doku? Woher hast du diese Klasse? Selber gemacht?
Naja, mit dem reinterpret_cast sollte es eigentlich gehen, schon ausprobiert?
Achja, ich glaube beim zweiten parameter musst du die länge des Strings übergeben, das wäre bei "test" dann 5.
mfg.
-
hmmm es funktioniert immernoch nicht. jetz geht die Shell auf und direkt wieder zu... wo liegt denn der Fehler?
-
kalua31 schrieb:
hmmm es funktioniert immernoch nicht. jetz geht die Shell auf und direkt wieder zu... wo liegt denn der Fehler?
Dann ist ein Fehler aufgetreten. Machst du beim Server auch recv()?
mfg.
-
ich kann nur read und write machen
Er sagt aber socket is not connected und das in Endlos !
-
kalua31 schrieb:
ich kann nur read und write machen
Er sagt aber socket is not connected und das in Endlos !
Dann liegt das Problem schon beim verbinden. Wie gesagt: Schick mal die Implementierung oder ne DOku der Klasse rüber.
mfg.
-
ich habe ja keine doku. kann dir nur schicken, was ich vorhin schon gepostet hab
sorry
-
kalua31 schrieb:
ich habe ja keine doku. kann dir nur schicken, was ich vorhin schon gepostet hab
sorryUnd woher kennst du die Klasse?
mfg.