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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
void CReseauxDlg::OnConnexion()
{
// TODO: Add your control notification handler code here
// Acquérir les valeurs actuelles
UpdateData(true);
// Déjà connecté ?
if (!m_bConnection)
{
// Non, désactiver l'élément correspondant
GetDlgItem(IDC_NOMSERVEUR)->EnableWindow(false);
GetDlgItem(IDC_PORTSERVEUR)->EnableWindow(false);
GetDlgItem(IDC_SERVEUR)->EnableWindow(false);
// L'instance est-elle un serveur ?
if (m_bIsServeur)
{
// Oui, attendre la connexion
m_ServerSocket.Create(m_iPortServeur);
m_ServerSocket.Listen();
// Désactiver l'élément Connexion
GetDlgItem(IDC_CONNEXION)->EnableWindow(false);
}
else
{
// Non, tenter d'établir la connexion
m_ClientSocket.Create();
if (m_strNomServeur=="" && m_strNomServeur2!="" )
{
m_ClientSocket.Connect(m_strNomServeur2,
m_iPortServeur);
}
else
{
m_ClientSocket.Connect(m_strNomServeur,
m_iPortServeur);
}
// Modifier l'inscription de connexion
m_ctrlConnexion.SetWindowText(
"&Déconnexion");
}
// Noter qu'une connexion existe
m_bConnection = true;
////////////////////////////////////////////
////////////////////////////////////////////
// message qui s'affiche chez le serveur lorsque
CString connexion ;
// Placer le préfixe
connexion = "schnito s'est connecté " ;
// Se procurer la longueur de la chaîne
int nSize = connexion.GetLength();
// Envoyer la chaîne
int nResult = m_ClientSocket.Send(LPCTSTR(connexion), nSize);
////////////////////////////////////////////
////////////////////////////////////////////
}
else
{
// Une connexion existait
// -> la fermer
////////////////////////////////////////////
////////////////////////////////////////////
CString deconnexion ;
// Placer le préfixe
deconnexion = "schnito s'est déconnecté " ;
// Se procurer la longueur de la chaîne
int nSize = deconnexion.GetLength();
// Envoyer la chaîne
int nResult = m_ClientSocket.Send(LPCTSTR(deconnexion), nSize);
///////////////////////////////////////////
////////////////////////////////////////////
OnClose();
// Noter qu'aucune connexion n'existe plus
m_bConnection = false;
}
}
Pour la fonction du serveur:
void CReseauxDlg::OnServeur()
{
// TODO: Add your control notification handler code here
// Lire les données actuelles
UpdateData(true);
// Cette instance fera-t-elle office de serveur ?
if (m_bIsServeur)
{
// Oui, changer le texte du bouton
m_ctrlConnexion.SetWindowText("&Attente client");
// Désactiver les champs serveur
GetDlgItem(IDC_NOMSERVEUR)->EnableWindow(false);
GetDlgItem(IDC_PORTSERVEUR)->EnableWindow(false);
}
else if (m_bIsServeur && !m_bConnection)
{
{
// Oui, changer le texte du bouton
m_ctrlConnexion.SetWindowText("&Deconnection");
// Désactiver les champs serveur
GetDlgItem(IDC_NOMSERVEUR)->EnableWindow(true);
GetDlgItem(IDC_PORTSERVEUR)->EnableWindow(true);
}
} |