[Socket] Probleme de segment TCP
Salut,
J'ai une methode dans un thread qui permet d'ecouter un port d'une ip et de me recuperer le flux recu dans un string. Lorsque que ce flux est segmenté j'obtient que le 1er flux arrivé et je ne peux pas acceder aux autres parties.
Voici mon code qui fonctionne avec un flux tcp non segmenté :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
private void Ecoute()
{
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Socket clientSocket;
serverSocket.Bind(new IPEndPoint(IPAddress.Parse("0.0.0.0"), 9999));
serverSocket.Listen(10);
while ((clientSocket = serverSocket.Accept()) != null)
{
NetworkStream serverSockStream = new NetworkStream(clientSocket);
MemoryStream mstemp = new MemoryStream();
do
{
int a = serverSockStream .ReadByte();
mstemp.WriteByte((byte)a);
} while (serverSockStream.DataAvailable);
MemoryStream FluxRecu = new MemoryStream(mstemp.GetBuffer());
StreamReader readerMime = new StreamReader(FluxRecu, Encoding.Default);
//Ici je recupere le flux dans un string
string Contenu = readerMime.ReadToEnd();
/***reponse***/
string donnees = "HTTP/1.1 200 OK";
clientSocket.Send(Encoding.Default.GetBytes(donnees), 0, donnees.Length, SocketFlags.None);
/*************/
clientSocket.Close();
}
} |
Comment je peux recuperer un flux complet meme si il arrive segmenté ?
Merci :P