Hé les gars, voici mon code.Données de socket étranges C++
int main() {
char buffer[BUFSIZE];
// define our address structure, stores our port
// and our ip address, and the socket type, etc..
struct sockaddr_in addrinfo;
addrinfo.sin_family = AF_INET;
addrinfo.sin_port = htons(PORT);
addrinfo.sin_addr.s_addr = INADDR_ANY;
// create our socket.
int sock;
if ((sock = socket(addrinfo.sin_family, SOCK_STREAM, 0)) < 0) {
cout << "Error in creating the socket.";
}
// bind our socket to the actual adress we want
if (bind(sock, (struct sockaddr*)&addrinfo, sizeof(addrinfo)) != 0) {
cout << "Error in binding.";
}
// open the socket up for listening
if (listen(sock, 5) != 0) {
cout << "Error in opening listener.";
}
cout << "Waiting for connections...." << endl;
char *msg = "Success! You are connected.\r\n";
// continuously accept new connections.. but no multithreading.. yet
while(1) {
struct sockaddr_in client_addr;
socklen_t sin_size = sizeof(client_addr);
if(int client = accept(sock, (struct sockaddr*)&client_addr, &sin_size)) {
cout << "Recived new connection from " << inet_ntoa(client_addr.sin_addr) << endl;
send(client, msg, strlen(msg), 0);
while(1) {
send(client, buffer, recv(client, buffer, BUFSIZE, 0), 0);
cout << buffer << endl;
strcpy(buffer, "");
}
} else {
cout << "Error in accepting new connection." << endl;
}
}
close(sock);
return 0;
}
Maintenant, je suis très nouveau aux prises, Im juste une sorte d'essayer d'obtenir une sensation pour eux mais j'ai une certaine expérience avec les sockets en PHP. J'utilise telnet via putty sur ma machine linux pour tester cela, je ne sais pas si cela cause des problèmes mais le serveur sort des caractères étranges et je ne sais pas pourquoi. Je pense que cela a quelque chose à voir avec le tampon, mais je ne suis pas vraiment sûr. Je peux envoyer des choses comme "salut" au serveur via telnet et il les sort très bien et me les renvoie mais quand j'envoie des choses comme "hoobla" ça commence le truc funky. Toute suggestion serait utile!
Merci d'avance!
ok, donc recv retourne réellement la taille de l'octet qu'il contient? –
Oui, ou -1 en cas d'erreur ou 0 si l'autre extrémité ferme la connexion, que le code traite également ici. – paxdiablo