Pb de causerie socket client/serveur
Le
zkoubidou

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);
}
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);
}
l'émission.
--
Paul Bacelar
MVP VC++
"zkoubidou" news:
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 :
TCP/IP "Nagle". On utilise SocketOptionName.NoDelay pour le désactiver. cf
ici
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemnetsocketssocketoptionnameclasstopic.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemnetsocketstcpclientclassnodelaytopic.asp
http://www.dotnet247.com/247reference/msgs/53/269540.aspx
Simon.
www.softfluent.com
"zkoubidou" news:
imprimable...
Désolé pour le dérengement..
Et merci pour vos réponses.
"Simon Mourier [SoftFluent]" a écrit :