Bonjour,
J'ai un code Cpp qui recoit un string d'une applet java, calcule un XML en fonction, et le renvoie a l'applet. Mais voila la fonction send() qui marchait dans le petit serveur de base qu e j'ai fait pour m'entrainer bloque littéralement maintenant, et fige l'applet au meme passage.
MAXSIZE_XMLFILE = 5000000;
alors j'ai vraiment pas pense que ca pouvait etre un probleme de taille de buffer. Alors je lui ai fait afficher son errno, Mais vu que send bloque, ca affiche jamais l'errno. Alors j'ai mis mon texte a la place du XML qui arrive. Et la surprise, j'ai l'erreur Broken pipe, erreur qui n'est pas repertorie dans la liste du manuel :
http://www.linux-kheops.com/doc/man/...n2/send.2.html
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 int sendAnswerToSocket(string answerStr) { // answerStr = "<je t ai bien eu>\n"; char buffer[MAXSIZE_XMLFILE]; memset(buffer, '\0', sizeof(buffer)); //http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/memset.3.html sprintf(buffer, answerStr.c_str()); // sprintf(buffer,"et maintenant"); //http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/sprintf.3.html cout<<"Answer from server: "<<buffer<<endl; //send(sock2, buffer, sizeof(buffer), 0); if(send(sock2, buffer, sizeof(buffer), MSG_DONTWAIT))//<=ICI EST LE PROBLEME cout<<"Error send() => "<<strerror(errno)<<endl; //http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/send.2.html //sendmsg(sock2, const struct msghdr *msg, MSG_DONTWAIT); return 0; }
Quelqu'un pourrais m'en dire un peu plus ?
Partager