J'ai 2 programmes. 1 serveur et 1 client.Que se passe-t-il lorsque nous faisons networkstream.write()?
Dans le client, il va quelque chose comme ceci:
while(statement)
{
networkstream.write(data);
}
Et dans le serveur, il va quelque chose comme ceci:
while(statement)
{
while(statement)
{
ReceiveData;
}
Do other stuff;
}
Ainsi, alors que le client peut écrire dans le flux de réseau très rapide , le serveur doit toujours s'occuper des données avant de pouvoir en lire plus. Que se passe-t-il lorsque le client a déjà effectué 4 tours de la boucle contenant l'écriture alors que le serveur n'a encore lu qu'une seule fois par exemple.
Y at-il un moyen de faire savoir au client quand il peut faire une autre écriture? Et aussi ce qui arrive quand le client fait plusieurs '.write'? Le serveur les garde-t-il tous et les lit-il tous ou les données envoyées sont-elles écrasées?
J'espère que vous pouvez comprendre ma question. Editez le titre de la question si vous le désirez.
networkstream.Write est synchrone. Il attend que les données soient envoyées. networkstream.WriteAsync ne l'est pas. Lequel utilisez-vous? Les deux ont la mécanique pour assurer assez écrire/lire – ntohl
En ce moment je l'ai comme ceci: 'networkstream.Write (SendingBuffer, 0, currentPacketLength);' – meme
http://stackoverflow.com/questions/1611582/how-does-networkstream -work-dans-deux-directions qui devraient aider – ntohl