Sockets : exceptions levées par Begin* et End*
j'ai quelques soucis avec l'utilisation des sockets :
afin de transferer des données en p2p, j'utilise les methodes Socket.BeginReceive, Socket.BeginSend, Socket.EndReceive, et Socket.EndSend.
Mon problème est simple : si l'un des programmes (serveur ou client) plante lors du transfert, ces methodes levent l'exception
Citation:
(System.Net.Sockets.SocketException)
Une connexion existante a dû être fermée par l’hôte distant
Comment prévenir ce problème sans utiliser des try{}catch{} répétitifs (navrant pour les performances)?
précision : pourtant, je vérifie bien que le socket est connecté avant d'appeler une de ces methodes... exemple :
C#
Code:
1 2 3 4 5 6 7
|
if (!socket.Connected)
{
error(errorTypes.connexionLost);
return;
}
socket.BeginReceive(buffer, 0, HEADER_SIZE, SocketFlags.None, new AsyncCallback(headerReceived), null); |