Bonjour à tous,
Suite à mon précédent poste, je me suis rendu compte que mon problème n'était pas forcément du à l'affichage du wxchar* dans un wxstatictext.
Pour m'en convaincre, j'ai modifié le sample client. Le but, se connecter à un serveur quelconque et écouter le retour du serveur.
Donc j'ai modifié le port utilisé (3000) pour le port 80 par example. Dans le sample, j'ai supprimé les opérations d'écriture vers le serveur afin de ne laisser que les opérations de lecture sur la socket. J'ai rajouté une ligne afin d'afficher le retour sur la socket. Le code du test1 ressemble donc maintenant à celà:
Alors en effet la lecture bloque, surement à cause de la taille du retour, mais quand on annule la transaction par le menu, le contenu du buffer est alors affiché. On obtient alors, de jolis carrés!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
37
38
39
40
41
42
43
44
45
46
47
48
49 void MyFrame::OnTest1(wxCommandEvent& WXUNUSED(event)) { const wxChar *buf1; wxChar *buf2; unsigned char len; // Disable socket menu entries (exception: Close Session) m_busy = true; UpdateStatusBar(); m_text->AppendText(_("\n=== Test 1 begins ===\n")); // Tell the server which test we are running /*unsigned char c = 0xBE; m_sock->Write(&c, 1);*/ m_sock->SetFlags(wxSOCKET_WAITALL); buf1 = _("Test string (less than 256 chars!)"); len = (unsigned char)((wxStrlen(buf1) + 1) * sizeof(wxChar)); buf2 = new wxChar[wxStrlen(buf1) + 1]; m_text->AppendText(_("Sending a test buffer to the server ...")); /*m_sock->Write(&len, 1); m_sock->Write(buf1, len);*/ m_text->AppendText(m_sock->Error() ? _("failed !\n") : _("done\n")); m_text->AppendText(_("Receiving the buffer back from server ...")); m_sock->Read(buf2, len); m_text->AppendText(m_sock->Error() ? _("failed !\n") : _("done\n")); m_text->AppendText(_("Comparing the two buffers ...")); if (memcmp(buf1, buf2, len) != 0) { m_text->AppendText(_("failed!\n")); m_text->AppendText(_("Test 1 failed !\n")); } else { m_text->AppendText(_("done\n")); m_text->AppendText(_("Test 1 passed !\n")); } m_text->AppendText(buf2); m_text->AppendText(_("=== Test 1 ends ===\n")); delete[] buf2; m_busy = false; UpdateStatusBar(); }
J'aimerai savoir comment, afficher en texte lisible, le retour du serveur.
Le problème vient il de la manière de se connecter? de lire?
Merci
Partager