hallo allemaal,
ik wil graag leren hoe je een een networkprogramma maakt en ben daarom als leer project bezig met het maken van een chat programma in c++. Ik heb een paar tutorials gelezen en vervolgens een client en een server geschreven met hele basic functionaliteit. Nu wil ik echter de client en server mergen in 1 programma waarbij de gebruiker kiest of ie wil hosten of wil joinen. Voor het hosten heb ik de volgende functie:
Het rare is nu alleen dat dit in de server only programma gewoon werkt, dit is een bijna exacte kopie ervan ( en de rest van het progamma is op dezelfde manier opgezet) maar nu werkt het niet.
Als deze functie wordt aangeroepen na het initialiseren van de sockets in instelen van nickname en port dan zie ik altijd staan dat er een netwerkconnectie is, ook als ik geen joinende heb gestart. met andere woorden, de if statement is altijd waar.
Het rare is alleen dat in mijn server programma dezelfde code wordt gebruikt (alleen dan direct in de main en niet een functie) en dan doet ie het wel
. Mijn vraag is dus of iemand ziet wat er hier fout gaat want ik snap er helemaal niks meer van omdat ik dezelfde code hergebruik. zelfs de manier waarop de sockets worden ingesteld zijn hetzelfde. alvast bedankt!
ik wil graag leren hoe je een een networkprogramma maakt en ben daarom als leer project bezig met het maken van een chat programma in c++. Ik heb een paar tutorials gelezen en vervolgens een client en een server geschreven met hele basic functionaliteit. Nu wil ik echter de client en server mergen in 1 programma waarbij de gebruiker kiest of ie wil hosten of wil joinen. Voor het hosten heb ik de volgende functie:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| void HostPeer() { while(1) { //constantly look if there is an incoming connection if(networksocket = accept(networksocket,(SOCKADDR*)&addr,&addrlen)) //if there is then accept it { cout << "Incoming connection!" << endl; send(networksocket,&nickname[0],64,NULL); //send own name to connecting client recv(networksocket,&peername[0],64,NULL);//receive the name of the connecting client cout << "connected with: " << peername << endl; return; //return out of the function } } } |
Het rare is nu alleen dat dit in de server only programma gewoon werkt, dit is een bijna exacte kopie ervan ( en de rest van het progamma is op dezelfde manier opgezet) maar nu werkt het niet.
Als deze functie wordt aangeroepen na het initialiseren van de sockets in instelen van nickname en port dan zie ik altijd staan dat er een netwerkconnectie is, ook als ik geen joinende heb gestart. met andere woorden, de if statement is altijd waar.
Het rare is alleen dat in mijn server programma dezelfde code wordt gebruikt (alleen dan direct in de main en niet een functie) en dan doet ie het wel