Bonjour à tous,
En faite j'ai un peut de mal a fermer mon serveur : ici c'est la fonction run_serveur qui marche
Je précise c'est du c++.net, pareil que le c# juste remplacer les flèches par des points. Et c'est les socket asynchrone, c'est à dire qui s'execute directement dans des threads separés.
void run_serveur(int port)
{
socket_serveur =
new Socket(AddressFamily::InterNetwork, SocketType::Stream, ProtocolType::Tcp );
IPAddress* ipadress
__gc[] ;
// On récupere les informations de l'ordinateur (son nom puis son adresse IP)
IPHostEntry * he = Dns::GetHostByName(Dns::GetHostName());
ipadress = he->AddressList;
IPEndPoint * server =
new IPEndPoint(ipadress[0],port);
socket_serveur->Bind(server) ;
socket_serveur->Listen(100) ;
//On se met en attente de la connection d'un client
AsyncCallback* pasync =
new AsyncCallback(this, &Form1::connexionAcceptCallback);
socket_serveur->BeginAccept(pasync, socket_serveur);
}
et là on a la fonction close_server qui deconne
public
: void CloseServer()
{
if (socket_serveur != 0 && socket_serveur->Handle.ToInt32() != -1)
socket_serveur->Close() ; // CA DECONNE ICI
}
le message d'erreur est le suivant :
Une exception non gérée du type 'System.InvalidOperationException' s'est produite dans system.dll
Informations supplémentaires : AcceptCallback
Apparement il est pas content quand je veux fermer le socket serveur.
Si quelqun avait une solution, ou une piste....
Par avance, merci.