MFC : Attendre une réponse du serveur - C++ - Programmation
MarshPosté le 22-07-2004 à 13:44:28
Voila j'ai un petit probleme. Je suis connecte a un switch en telnet, et quand je veux la liste des utilisateurs, le switch me renvoie une partie de la reponse et normalement il faut genre appuyer sur une touche pour avoir le reste...etc ex : Quand on se connecte en telnet ca donne :
Citation :
client:list user serveur : login password toto **** ..... --More-- or (q)uit client : (on appuie sur une touche) titi **** ..... Nb of users : x
Et mon probleme se situe quand jenvoie sur ma socket une touche au hasard pour recuperer le reste des utilisateurs et qu'ensuite je veux recuperer le message pour l'écrire dans mon fichier "le programme est trop rapide"
Voici mon code :
Citation :
CFile myFile(hFile);
myFile.Write(message, lstrlen(message)); ULONGLONG dwLength = myFile.GetLength(); char *buffer = new char[dwLength]; DWORD dwRead; myFile.SeekToBegin(); dwRead = myFile.Read(buffer, dwLength); buffer[dwLength] = 0; for (i = 0, tmp = 0;buffer[i]; i++) { if (strncmp(buffer+i, "--More-- or (q)uit", 18) == 0) { m_Socket->Send("\n", 1); myFile.SeekToEnd(); myFile.Write("______2eme PARTIE_______\n", 25); myFile.Write(message, lstrlen(message));
} }
Et quand jouvre mon fichier ca donne un truk du genre : list user toto **** --More-- or (q)uit ______2eme PARTIE_______ list user toto **** --More-- or (q)uit Et pourtant vu que je "TRACE" tout ce qui arrive dans ma socket (dans une autre fonction), je voie bien mon nouveau message arrivé. J'ai l'impression que mon 2nd message n'arrive pas a temps avant que j'écrive dans le fichier. J'ai essayé avec un Sleep() mais ca revient au meme. Est ce que quelqu'un a une idee pour que j'ai ce nouvo message quand j'écris dans le fichier ? Ou alors une petite fonction dont je ne connais pas qui me permet de faire ca ?
Marsh Posté le 22-07-2004 à 13:44:28
Voila j'ai un petit probleme.
Je suis connecte a un switch en telnet, et quand je veux la liste des utilisateurs, le switch me renvoie une partie de la reponse et normalement il faut genre appuyer sur une touche pour avoir le reste...etc
ex :
Quand on se connecte en telnet ca donne :
client:list user
serveur :
login password
toto ****
.....
--More-- or (q)uit
client : (on appuie sur une touche)
titi ****
.....
Nb of users : x
Et mon probleme se situe quand jenvoie sur ma socket une touche au hasard pour recuperer le reste des utilisateurs et qu'ensuite je veux recuperer le message pour l'écrire dans mon fichier "le programme est trop rapide"
Voici mon code :
CFile myFile(hFile);
myFile.Write(message, lstrlen(message));
ULONGLONG dwLength = myFile.GetLength();
char *buffer = new char[dwLength];
DWORD dwRead;
myFile.SeekToBegin();
dwRead = myFile.Read(buffer, dwLength);
buffer[dwLength] = 0;
for (i = 0, tmp = 0;buffer[i]; i++)
{
if (strncmp(buffer+i, "--More-- or (q)uit", 18) == 0)
{
m_Socket->Send("\n", 1);
myFile.SeekToEnd();
myFile.Write("______2eme PARTIE_______\n", 25);
myFile.Write(message, lstrlen(message));
}
}
Et quand jouvre mon fichier ca donne un truk du genre :
list user
toto ****
--More-- or (q)uit
______2eme PARTIE_______
list user
toto ****
--More-- or (q)uit
Et pourtant vu que je "TRACE" tout ce qui arrive dans ma socket (dans une autre fonction), je voie bien mon nouveau message arrivé.
J'ai l'impression que mon 2nd message n'arrive pas a temps avant que j'écrive dans le fichier.
J'ai essayé avec un Sleep() mais ca revient au meme.
Est ce que quelqu'un a une idee pour que j'ai ce nouvo message quand j'écris dans le fichier ? Ou alors une petite fonction dont je ne connais pas qui me permet de faire ca ?
Merci
Message édité par flou1 le 22-07-2004 à 13:46:09