kickerxy123
Erfahrenes Mitglied
Hallo!
sollte also wenn 2 oder mehr Clienten verbunden sind(cur_clients) und wenn das Spiel noch nicht läuft (start == false) an alle Clients msgl senden.
Tut er auch, allerdings kommt bei den Clienten immer raus:
"Viereck 7"
also ohne " " und ohne Leerzeichen. Viereck ist dieses typische weiße Kastending, dass erscheint, wenn er keine Ahnung hat, was für ein Zeichen das ist.
allerdings sagt cout << msgl : "7"
der Client ist ein Flash Client, Flash 8 Basic.
dort hab ich mit trace(message) eben besagtes viereck mit 7 herausbekommen.
Woran kann es liegen?
edit:
ist kurz davor im Quelltext und sendet korrekterweise dem Clienten msg[0] = intToChar(i);
(ist vielleicht komplizierter zu erklären, was das dort soll, aber es läuft auch ohne das ein Viereck gesendet wird!)
und ich hab herausgefunden:
wenn ich statt
das schreibe:
kommt an:
"viereck7"
"17"
"27"
"37"
"......usw"
ich bin ratlos..
hieße also das das Viereck vermutlich eine 0 darstellt. nur warum?
Code:
if(true){
if(start == false){
if(cur_clients >1){
start = true;
for(short t = 0; t < MAX_CLIENTS; t++){
if(clients[t]!=INVALID_SOCKET){if(true){
msgl[0]='7';
msgl[1]='\0';
send(clients[t],msgl,(int)strlen(msgl)+1,0);
cout << "Spiel kann starten!"<<endl;
cout << msgl << endl;
}
}
}
}
}
}
Tut er auch, allerdings kommt bei den Clienten immer raus:
"Viereck 7"
also ohne " " und ohne Leerzeichen. Viereck ist dieses typische weiße Kastending, dass erscheint, wenn er keine Ahnung hat, was für ein Zeichen das ist.
allerdings sagt cout << msgl : "7"
der Client ist ein Flash Client, Flash 8 Basic.
dort hab ich mit trace(message) eben besagtes viereck mit 7 herausbekommen.
Woran kann es liegen?
edit:
Code:
while(msg[0] != intToChar(i)){
if(!strcmp("ID_REQUEST",buf)){ //wenn buf == ID_REQUEST!
msg[0] = intToChar(i);
msg[1] = '\0';
send(clients[i],msg,3,0);
cout << "Antwort: " << msg[0] << endl;
//break;
}else{
rc=recv(clients[i],buf,256,0); //versuche nochmal
}
}
(ist vielleicht komplizierter zu erklären, was das dort soll, aber es läuft auch ohne das ein Viereck gesendet wird!)
und ich hab herausgefunden:
wenn ich statt
Code:
msgl[0]='7';
msgl[1]='\0';
send(clients[t],msgl,(int)strlen(msgl)+1,0);
Code:
msgl[0]='7';
msgl[1]='\0';
send(clients[t],msgl,(int)strlen(msgl)+1,0);
send(clients[t],msgl,(int)strlen(msgl)+1,0);
send(clients[t],msgl,(int)strlen(msgl)+1,0);
send(clients[t],msgl,(int)strlen(msgl)+1,0);
"viereck7"
"17"
"27"
"37"
"......usw"
ich bin ratlos..
hieße also das das Viereck vermutlich eine 0 darstellt. nur warum?
Zuletzt bearbeitet: