Bonjour,
Voila mon problème: je récupère dans data ce que m'envoie un client que je
charge dans "msg". Si le contenue de data vaut "IDEXP", je veux répondre
"OK". Je charge la chaine "OK" dans "myWriteBuffer" et je fais
stream.Write(myWriteBuffer, 0, myWriteBuffer.Length)...rienne remonte vers le
client... Par contre si derrière je fais un stream.Write de "msg" (en
commentaire dans l'exemple), dans le client j'obtiens une réponse avec les
deux stream.Write.Dès que je remets en commentaire le stream.Write "msg" je
n'ai plus de réponse...
Je dois louper un truc mais je sais pas quoi.
Merci d'avance pour votre aide.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Paul Bacelar
Avez-vous pris en compte que les socket TCP font de la bufferisation à l'émission. -- Paul Bacelar MVP VC++
"zkoubidou" wrote in message news:
Bonjour, Voila mon problème: je récupère dans data ce que m'envoie un client que je charge dans "msg". Si le contenue de data vaut "IDEXP", je veux répondre "OK". Je charge la chaine "OK" dans "myWriteBuffer" et je fais stream.Write(myWriteBuffer, 0, myWriteBuffer.Length)...rienne remonte vers le client... Par contre si derrière je fais un stream.Write de "msg" (en commentaire dans l'exemple), dans le client j'obtiens une réponse avec les deux stream.Write.Dès que je remets en commentaire le stream.Write "msg" je n'ai plus de réponse... Je dois louper un truc mais je sais pas quoi. Merci d'avance pour votre aide.
Avez-vous pris en compte que les socket TCP font de la bufferisation à
l'émission.
--
Paul Bacelar
MVP VC++
"zkoubidou" <zkoubidou@discussions.microsoft.com> wrote in message
news:F75004F8-4EBF-433A-A190-6C0A90DFE713@microsoft.com...
Bonjour,
Voila mon problème: je récupère dans data ce que m'envoie un client que je
charge dans "msg". Si le contenue de data vaut "IDEXP", je veux répondre
"OK". Je charge la chaine "OK" dans "myWriteBuffer" et je fais
stream.Write(myWriteBuffer, 0, myWriteBuffer.Length)...rienne remonte vers
le
client... Par contre si derrière je fais un stream.Write de "msg" (en
commentaire dans l'exemple), dans le client j'obtiens une réponse avec les
deux stream.Write.Dès que je remets en commentaire le stream.Write "msg"
je
n'ai plus de réponse...
Je dois louper un truc mais je sais pas quoi.
Merci d'avance pour votre aide.
Avez-vous pris en compte que les socket TCP font de la bufferisation à l'émission. -- Paul Bacelar MVP VC++
"zkoubidou" wrote in message news:
Bonjour, Voila mon problème: je récupère dans data ce que m'envoie un client que je charge dans "msg". Si le contenue de data vaut "IDEXP", je veux répondre "OK". Je charge la chaine "OK" dans "myWriteBuffer" et je fais stream.Write(myWriteBuffer, 0, myWriteBuffer.Length)...rienne remonte vers le client... Par contre si derrière je fais un stream.Write de "msg" (en commentaire dans l'exemple), dans le client j'obtiens une réponse avec les deux stream.Write.Dès que je remets en commentaire le stream.Write "msg" je n'ai plus de réponse... Je dois louper un truc mais je sais pas quoi. Merci d'avance pour votre aide.
Bonjour, Et bien je pense... Ce matin j'ai essayé: Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK"); stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); //stream.Write(msg, 0, msg.Length);
--> je n'ai pas de réponse... Si j'enlève le commentaire du dernier stream.Write, j'obtiens en réponse sur le client: OKOKOKIDEXP ( les 4 stream.Wirte)... Je compreds par pourquoi sans le stream.Write des datas reçues (msg) je ne réponds pas. Mercide votre aide...
"Paul Bacelar" a écrit :
Avez-vous pris en compte que les socket TCP font de la bufferisation à l'émission. -- Paul Bacelar MVP VC++
"zkoubidou" wrote in message news: > Bonjour, > Voila mon problème: je récupère dans data ce que m'envoie un client que je > charge dans "msg". Si le contenue de data vaut "IDEXP", je veux répondre > "OK". Je charge la chaine "OK" dans "myWriteBuffer" et je fais > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length)...rienne remonte vers > le > client... Par contre si derrière je fais un stream.Write de "msg" (en > commentaire dans l'exemple), dans le client j'obtiens une réponse avec les > deux stream.Write.Dès que je remets en commentaire le stream.Write "msg" > je > n'ai plus de réponse... > Je dois louper un truc mais je sais pas quoi. > Merci d'avance pour votre aide. > > Int32 i; > while((i = stream.Read(bytes, 0, bytes.Length))!=0) > { > data = System.Text.Encoding.ASCII.GetString(bytes, 0, i); > data = data.ToUpper(); > Byte[] msg = System.Text.Encoding.ASCII.GetBytes(data); > if(data.CompareTo("IDEXP")==1) > { > Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK"); > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); > //stream.Write(msg, 0, msg.Length); > } > else > { > Byte[] myWriteBufferError = Encoding.ASCII.GetBytes("ERROR"); > stream.Write(myWriteBufferError, 0, myWriteBufferError.Length); > //stream.Write(msg, 0, msg.Length); > }
Bonjour,
Et bien je pense...
Ce matin j'ai essayé:
Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK");
stream.Write(myWriteBuffer, 0, myWriteBuffer.Length);
stream.Write(myWriteBuffer, 0, myWriteBuffer.Length);
stream.Write(myWriteBuffer, 0, myWriteBuffer.Length);
//stream.Write(msg, 0, msg.Length);
--> je n'ai pas de réponse... Si j'enlève le commentaire du dernier
stream.Write, j'obtiens en réponse sur le client:
OKOKOKIDEXP ( les 4 stream.Wirte)...
Je compreds par pourquoi sans le stream.Write des datas reçues (msg) je ne
réponds pas.
Mercide votre aide...
"Paul Bacelar" a écrit :
Avez-vous pris en compte que les socket TCP font de la bufferisation à
l'émission.
--
Paul Bacelar
MVP VC++
"zkoubidou" <zkoubidou@discussions.microsoft.com> wrote in message
news:F75004F8-4EBF-433A-A190-6C0A90DFE713@microsoft.com...
> Bonjour,
> Voila mon problème: je récupère dans data ce que m'envoie un client que je
> charge dans "msg". Si le contenue de data vaut "IDEXP", je veux répondre
> "OK". Je charge la chaine "OK" dans "myWriteBuffer" et je fais
> stream.Write(myWriteBuffer, 0, myWriteBuffer.Length)...rienne remonte vers
> le
> client... Par contre si derrière je fais un stream.Write de "msg" (en
> commentaire dans l'exemple), dans le client j'obtiens une réponse avec les
> deux stream.Write.Dès que je remets en commentaire le stream.Write "msg"
> je
> n'ai plus de réponse...
> Je dois louper un truc mais je sais pas quoi.
> Merci d'avance pour votre aide.
>
> Int32 i;
> while((i = stream.Read(bytes, 0, bytes.Length))!=0)
> {
> data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
> data = data.ToUpper();
> Byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);
> if(data.CompareTo("IDEXP")==1)
> {
> Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK");
> stream.Write(myWriteBuffer, 0, myWriteBuffer.Length);
> //stream.Write(msg, 0, msg.Length);
> }
> else
> {
> Byte[] myWriteBufferError = Encoding.ASCII.GetBytes("ERROR");
> stream.Write(myWriteBufferError, 0, myWriteBufferError.Length);
> //stream.Write(msg, 0, msg.Length);
> }
Bonjour, Et bien je pense... Ce matin j'ai essayé: Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK"); stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); //stream.Write(msg, 0, msg.Length);
--> je n'ai pas de réponse... Si j'enlève le commentaire du dernier stream.Write, j'obtiens en réponse sur le client: OKOKOKIDEXP ( les 4 stream.Wirte)... Je compreds par pourquoi sans le stream.Write des datas reçues (msg) je ne réponds pas. Mercide votre aide...
"Paul Bacelar" a écrit :
Avez-vous pris en compte que les socket TCP font de la bufferisation à l'émission. -- Paul Bacelar MVP VC++
"zkoubidou" wrote in message news: > Bonjour, > Voila mon problème: je récupère dans data ce que m'envoie un client que je > charge dans "msg". Si le contenue de data vaut "IDEXP", je veux répondre > "OK". Je charge la chaine "OK" dans "myWriteBuffer" et je fais > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length)...rienne remonte vers > le > client... Par contre si derrière je fais un stream.Write de "msg" (en > commentaire dans l'exemple), dans le client j'obtiens une réponse avec les > deux stream.Write.Dès que je remets en commentaire le stream.Write "msg" > je > n'ai plus de réponse... > Je dois louper un truc mais je sais pas quoi. > Merci d'avance pour votre aide. > > Int32 i; > while((i = stream.Read(bytes, 0, bytes.Length))!=0) > { > data = System.Text.Encoding.ASCII.GetString(bytes, 0, i); > data = data.ToUpper(); > Byte[] msg = System.Text.Encoding.ASCII.GetBytes(data); > if(data.CompareTo("IDEXP")==1) > { > Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK"); > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); > //stream.Write(msg, 0, msg.Length); > } > else > { > Byte[] myWriteBufferError = Encoding.ASCII.GetBytes("ERROR"); > stream.Write(myWriteBufferError, 0, myWriteBufferError.Length); > //stream.Write(msg, 0, msg.Length); > }
Simon Mourier [SoftFluent]
Comme l'indique Paul Bacelar, ceci à peut-être rapport avec l'algorithme TCP/IP "Nagle". On utilise SocketOptionName.NoDelay pour le désactiver. cf ici
Bonjour, Et bien je pense... Ce matin j'ai essayé: Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK"); stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); //stream.Write(msg, 0, msg.Length);
--> je n'ai pas de réponse... Si j'enlève le commentaire du dernier stream.Write, j'obtiens en réponse sur le client: OKOKOKIDEXP ( les 4 stream.Wirte)... Je compreds par pourquoi sans le stream.Write des datas reçues (msg) je ne réponds pas. Mercide votre aide...
"Paul Bacelar" a écrit :
Avez-vous pris en compte que les socket TCP font de la bufferisation à l'émission. -- Paul Bacelar MVP VC++
"zkoubidou" wrote in message news: > Bonjour, > Voila mon problème: je récupère dans data ce que m'envoie un client que > je > charge dans "msg". Si le contenue de data vaut "IDEXP", je veux > répondre > "OK". Je charge la chaine "OK" dans "myWriteBuffer" et je fais > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length)...rienne remonte > vers > le > client... Par contre si derrière je fais un stream.Write de "msg" (en > commentaire dans l'exemple), dans le client j'obtiens une réponse avec > les > deux stream.Write.Dès que je remets en commentaire le stream.Write > "msg" > je > n'ai plus de réponse... > Je dois louper un truc mais je sais pas quoi. > Merci d'avance pour votre aide. > > Int32 i; > while((i = stream.Read(bytes, 0, bytes.Length))!=0) > { > data = System.Text.Encoding.ASCII.GetString(bytes, 0, i); > data = data.ToUpper(); > Byte[] msg = System.Text.Encoding.ASCII.GetBytes(data); > if(data.CompareTo("IDEXP")==1) > { > Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK"); > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); > //stream.Write(msg, 0, msg.Length); > } > else > { > Byte[] myWriteBufferError = Encoding.ASCII.GetBytes("ERROR"); > stream.Write(myWriteBufferError, 0, myWriteBufferError.Length); > //stream.Write(msg, 0, msg.Length); > }
Comme l'indique Paul Bacelar, ceci à peut-être rapport avec l'algorithme
TCP/IP "Nagle". On utilise SocketOptionName.NoDelay pour le désactiver. cf
ici
"zkoubidou" <zkoubidou@discussions.microsoft.com> a écrit dans le message de
news: 1FB82667-4D90-47B4-8668-61E25FEF3CFF@microsoft.com...
Bonjour,
Et bien je pense...
Ce matin j'ai essayé:
Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK");
stream.Write(myWriteBuffer, 0, myWriteBuffer.Length);
stream.Write(myWriteBuffer, 0, myWriteBuffer.Length);
stream.Write(myWriteBuffer, 0, myWriteBuffer.Length);
//stream.Write(msg, 0, msg.Length);
--> je n'ai pas de réponse... Si j'enlève le commentaire du dernier
stream.Write, j'obtiens en réponse sur le client:
OKOKOKIDEXP ( les 4 stream.Wirte)...
Je compreds par pourquoi sans le stream.Write des datas reçues (msg) je ne
réponds pas.
Mercide votre aide...
"Paul Bacelar" a écrit :
Avez-vous pris en compte que les socket TCP font de la bufferisation à
l'émission.
--
Paul Bacelar
MVP VC++
"zkoubidou" <zkoubidou@discussions.microsoft.com> wrote in message
news:F75004F8-4EBF-433A-A190-6C0A90DFE713@microsoft.com...
> Bonjour,
> Voila mon problème: je récupère dans data ce que m'envoie un client que
> je
> charge dans "msg". Si le contenue de data vaut "IDEXP", je veux
> répondre
> "OK". Je charge la chaine "OK" dans "myWriteBuffer" et je fais
> stream.Write(myWriteBuffer, 0, myWriteBuffer.Length)...rienne remonte
> vers
> le
> client... Par contre si derrière je fais un stream.Write de "msg" (en
> commentaire dans l'exemple), dans le client j'obtiens une réponse avec
> les
> deux stream.Write.Dès que je remets en commentaire le stream.Write
> "msg"
> je
> n'ai plus de réponse...
> Je dois louper un truc mais je sais pas quoi.
> Merci d'avance pour votre aide.
>
> Int32 i;
> while((i = stream.Read(bytes, 0, bytes.Length))!=0)
> {
> data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
> data = data.ToUpper();
> Byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);
> if(data.CompareTo("IDEXP")==1)
> {
> Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK");
> stream.Write(myWriteBuffer, 0, myWriteBuffer.Length);
> //stream.Write(msg, 0, msg.Length);
> }
> else
> {
> Byte[] myWriteBufferError = Encoding.ASCII.GetBytes("ERROR");
> stream.Write(myWriteBufferError, 0, myWriteBufferError.Length);
> //stream.Write(msg, 0, msg.Length);
> }
Comme l'indique Paul Bacelar, ceci à peut-être rapport avec l'algorithme TCP/IP "Nagle". On utilise SocketOptionName.NoDelay pour le désactiver. cf ici
Bonjour, Et bien je pense... Ce matin j'ai essayé: Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK"); stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); //stream.Write(msg, 0, msg.Length);
--> je n'ai pas de réponse... Si j'enlève le commentaire du dernier stream.Write, j'obtiens en réponse sur le client: OKOKOKIDEXP ( les 4 stream.Wirte)... Je compreds par pourquoi sans le stream.Write des datas reçues (msg) je ne réponds pas. Mercide votre aide...
"Paul Bacelar" a écrit :
Avez-vous pris en compte que les socket TCP font de la bufferisation à l'émission. -- Paul Bacelar MVP VC++
"zkoubidou" wrote in message news: > Bonjour, > Voila mon problème: je récupère dans data ce que m'envoie un client que > je > charge dans "msg". Si le contenue de data vaut "IDEXP", je veux > répondre > "OK". Je charge la chaine "OK" dans "myWriteBuffer" et je fais > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length)...rienne remonte > vers > le > client... Par contre si derrière je fais un stream.Write de "msg" (en > commentaire dans l'exemple), dans le client j'obtiens une réponse avec > les > deux stream.Write.Dès que je remets en commentaire le stream.Write > "msg" > je > n'ai plus de réponse... > Je dois louper un truc mais je sais pas quoi. > Merci d'avance pour votre aide. > > Int32 i; > while((i = stream.Read(bytes, 0, bytes.Length))!=0) > { > data = System.Text.Encoding.ASCII.GetString(bytes, 0, i); > data = data.ToUpper(); > Byte[] msg = System.Text.Encoding.ASCII.GetBytes(data); > if(data.CompareTo("IDEXP")==1) > { > Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK"); > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); > //stream.Write(msg, 0, msg.Length); > } > else > { > Byte[] myWriteBufferError = Encoding.ASCII.GetBytes("ERROR"); > stream.Write(myWriteBufferError, 0, myWriteBufferError.Length); > //stream.Write(msg, 0, msg.Length); > }
zkoubidou
Oups !! Sorry mais en fait l'appli cliente attendait un caractère non imprimable... Désolé pour le dérengement.. Et merci pour vos réponses.
"Simon Mourier [SoftFluent]" a écrit :
Comme l'indique Paul Bacelar, ceci à peut-être rapport avec l'algorithme TCP/IP "Nagle". On utilise SocketOptionName.NoDelay pour le désactiver. cf ici
"zkoubidou" a écrit dans le message de news: > Bonjour, > Et bien je pense... > Ce matin j'ai essayé: > Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK"); > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); > //stream.Write(msg, 0, msg.Length); > > --> je n'ai pas de réponse... Si j'enlève le commentaire du dernier > stream.Write, j'obtiens en réponse sur le client: > OKOKOKIDEXP ( les 4 stream.Wirte)... > Je compreds par pourquoi sans le stream.Write des datas reçues (msg) je ne > réponds pas. > Mercide votre aide... > > "Paul Bacelar" a écrit : > >> Avez-vous pris en compte que les socket TCP font de la bufferisation à >> l'émission. >> -- >> Paul Bacelar >> MVP VC++ >> >> "zkoubidou" wrote in message >> news: >> > Bonjour, >> > Voila mon problème: je récupère dans data ce que m'envoie un client que >> > je >> > charge dans "msg". Si le contenue de data vaut "IDEXP", je veux >> > répondre >> > "OK". Je charge la chaine "OK" dans "myWriteBuffer" et je fais >> > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length)...rienne remonte >> > vers >> > le >> > client... Par contre si derrière je fais un stream.Write de "msg" (en >> > commentaire dans l'exemple), dans le client j'obtiens une réponse avec >> > les >> > deux stream.Write.Dès que je remets en commentaire le stream.Write >> > "msg" >> > je >> > n'ai plus de réponse... >> > Je dois louper un truc mais je sais pas quoi. >> > Merci d'avance pour votre aide. >> > >> > Int32 i; >> > while((i = stream.Read(bytes, 0, bytes.Length))!=0) >> > { >> > data = System.Text.Encoding.ASCII.GetString(bytes, 0, i); >> > data = data.ToUpper(); >> > Byte[] msg = System.Text.Encoding.ASCII.GetBytes(data); >> > if(data.CompareTo("IDEXP")==1) >> > { >> > Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK"); >> > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); >> > //stream.Write(msg, 0, msg.Length); >> > } >> > else >> > { >> > Byte[] myWriteBufferError = Encoding.ASCII.GetBytes("ERROR"); >> > stream.Write(myWriteBufferError, 0, myWriteBufferError.Length); >> > //stream.Write(msg, 0, msg.Length); >> > } >> >> >>
Oups !! Sorry mais en fait l'appli cliente attendait un caractère non
imprimable...
Désolé pour le dérengement..
Et merci pour vos réponses.
"Simon Mourier [SoftFluent]" a écrit :
Comme l'indique Paul Bacelar, ceci à peut-être rapport avec l'algorithme
TCP/IP "Nagle". On utilise SocketOptionName.NoDelay pour le désactiver. cf
ici
"zkoubidou" <zkoubidou@discussions.microsoft.com> a écrit dans le message de
news: 1FB82667-4D90-47B4-8668-61E25FEF3CFF@microsoft.com...
> Bonjour,
> Et bien je pense...
> Ce matin j'ai essayé:
> Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK");
> stream.Write(myWriteBuffer, 0, myWriteBuffer.Length);
> stream.Write(myWriteBuffer, 0, myWriteBuffer.Length);
> stream.Write(myWriteBuffer, 0, myWriteBuffer.Length);
> //stream.Write(msg, 0, msg.Length);
>
> --> je n'ai pas de réponse... Si j'enlève le commentaire du dernier
> stream.Write, j'obtiens en réponse sur le client:
> OKOKOKIDEXP ( les 4 stream.Wirte)...
> Je compreds par pourquoi sans le stream.Write des datas reçues (msg) je ne
> réponds pas.
> Mercide votre aide...
>
> "Paul Bacelar" a écrit :
>
>> Avez-vous pris en compte que les socket TCP font de la bufferisation à
>> l'émission.
>> --
>> Paul Bacelar
>> MVP VC++
>>
>> "zkoubidou" <zkoubidou@discussions.microsoft.com> wrote in message
>> news:F75004F8-4EBF-433A-A190-6C0A90DFE713@microsoft.com...
>> > Bonjour,
>> > Voila mon problème: je récupère dans data ce que m'envoie un client que
>> > je
>> > charge dans "msg". Si le contenue de data vaut "IDEXP", je veux
>> > répondre
>> > "OK". Je charge la chaine "OK" dans "myWriteBuffer" et je fais
>> > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length)...rienne remonte
>> > vers
>> > le
>> > client... Par contre si derrière je fais un stream.Write de "msg" (en
>> > commentaire dans l'exemple), dans le client j'obtiens une réponse avec
>> > les
>> > deux stream.Write.Dès que je remets en commentaire le stream.Write
>> > "msg"
>> > je
>> > n'ai plus de réponse...
>> > Je dois louper un truc mais je sais pas quoi.
>> > Merci d'avance pour votre aide.
>> >
>> > Int32 i;
>> > while((i = stream.Read(bytes, 0, bytes.Length))!=0)
>> > {
>> > data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
>> > data = data.ToUpper();
>> > Byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);
>> > if(data.CompareTo("IDEXP")==1)
>> > {
>> > Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK");
>> > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length);
>> > //stream.Write(msg, 0, msg.Length);
>> > }
>> > else
>> > {
>> > Byte[] myWriteBufferError = Encoding.ASCII.GetBytes("ERROR");
>> > stream.Write(myWriteBufferError, 0, myWriteBufferError.Length);
>> > //stream.Write(msg, 0, msg.Length);
>> > }
>>
>>
>>
Oups !! Sorry mais en fait l'appli cliente attendait un caractère non imprimable... Désolé pour le dérengement.. Et merci pour vos réponses.
"Simon Mourier [SoftFluent]" a écrit :
Comme l'indique Paul Bacelar, ceci à peut-être rapport avec l'algorithme TCP/IP "Nagle". On utilise SocketOptionName.NoDelay pour le désactiver. cf ici
"zkoubidou" a écrit dans le message de news: > Bonjour, > Et bien je pense... > Ce matin j'ai essayé: > Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK"); > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); > //stream.Write(msg, 0, msg.Length); > > --> je n'ai pas de réponse... Si j'enlève le commentaire du dernier > stream.Write, j'obtiens en réponse sur le client: > OKOKOKIDEXP ( les 4 stream.Wirte)... > Je compreds par pourquoi sans le stream.Write des datas reçues (msg) je ne > réponds pas. > Mercide votre aide... > > "Paul Bacelar" a écrit : > >> Avez-vous pris en compte que les socket TCP font de la bufferisation à >> l'émission. >> -- >> Paul Bacelar >> MVP VC++ >> >> "zkoubidou" wrote in message >> news: >> > Bonjour, >> > Voila mon problème: je récupère dans data ce que m'envoie un client que >> > je >> > charge dans "msg". Si le contenue de data vaut "IDEXP", je veux >> > répondre >> > "OK". Je charge la chaine "OK" dans "myWriteBuffer" et je fais >> > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length)...rienne remonte >> > vers >> > le >> > client... Par contre si derrière je fais un stream.Write de "msg" (en >> > commentaire dans l'exemple), dans le client j'obtiens une réponse avec >> > les >> > deux stream.Write.Dès que je remets en commentaire le stream.Write >> > "msg" >> > je >> > n'ai plus de réponse... >> > Je dois louper un truc mais je sais pas quoi. >> > Merci d'avance pour votre aide. >> > >> > Int32 i; >> > while((i = stream.Read(bytes, 0, bytes.Length))!=0) >> > { >> > data = System.Text.Encoding.ASCII.GetString(bytes, 0, i); >> > data = data.ToUpper(); >> > Byte[] msg = System.Text.Encoding.ASCII.GetBytes(data); >> > if(data.CompareTo("IDEXP")==1) >> > { >> > Byte[] myWriteBuffer = Encoding.ASCII.GetBytes("OK"); >> > stream.Write(myWriteBuffer, 0, myWriteBuffer.Length); >> > //stream.Write(msg, 0, msg.Length); >> > } >> > else >> > { >> > Byte[] myWriteBufferError = Encoding.ASCII.GetBytes("ERROR"); >> > stream.Write(myWriteBufferError, 0, myWriteBufferError.Length); >> > //stream.Write(msg, 0, msg.Length); >> > } >> >> >>