[Sockets][Send/Recv] échanges de trames entre serveur et client en mode connecté
Bonjour,
J'utilise les sockets, en mode connecté (TCP). J'ai un serveur et plusieurs logiciel clients.
Je voudrait échanger les infos entre serveur et clients via des trames de type socket.
Voici ma méthode d'envoi : (client)
Code:
1 2 3 4 5 6 7 8 9
|
/********** ENVOI D'UN MESSAGE *******************************************************************/
public void SendMessage(string prmMessage) {
byte[] buffer; //buffer pour envoi et reception de trame
buffer = System.Text.Encoding.ASCII.GetBytes(prmMessage);
mySocket.Send(buffer, 0, buffer.Length, SocketFlags.None); //envoi de la trame
} |
Voici ma méthode de reception : (serveur)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
/********** RECEPT D'UN MESSAGE *******************************************************************/
public void ReceiveMessage(string prmMessage) {
byte[] buffer = new byte[1024]; //buffer pour envoir recept trame
System.Text.StringBuilder test = new StringBuilder();
string aaa = "aaa";
int count;
try {
count = serverSocket.Receive(buffer, 0, 1024, SocketFlags.None); //reception de la trame
Console.WriteLine("count : " + count);
//aaa = test.Append(System.Text.Encoding.ASCII.GetString(buffer, 0, count)).ToString(); //transtypage en String
Console.WriteLine("\n\n\n\n\n\n Message : " + aaa);
} catch (SocketException e) {
Console.WriteLine("\n**********************ERROR**********************\n" + e.StackTrace + "\n\n" + e.Message);
}
} |
Lorsque j'execute mon server est client, j'ai une exception qui se génére comme quoi ma socket n'existe plus.
Voici l'exception génrée :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
**********************ERROR**********************
à System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size,
SocketFlags socketFlags)
à pjtDaddaServer.ClassServer.SendMessage(String prmMessage) dans C:\Users\gai
lup\Documents\Visual Studio 2005\Projects\pjtDaddaServer\pjtDaddaServer\ClassSer
ver.cs:ligne 85
Une requête d'envoi ou de réception de données n'a pas été autorisée car le sock
et n'est pas connecté et (lors de l'envoi sur un socket datagramme en utilisant
un appel sendto) aucune adresse n'a été fournie |
Je ne vois pas trop d'où peux venir cette exception. Avez-vous des idées ?
Cordialement,
FONTAINE Guillaume.