/// <summary> /// Méthode du processus léger écoutant les messages du serveur. Le processus léger est bloquant sur le receive, et implique que la taille du message soit contenue dans les quatre premiers octets de celui-ci. /// Un event est levé à chaque réception de message. /// </summary> private void receiveMessage() { while (true) { try { //Les quatre premiers octets contiennent la taille du message: byte[] count = new byte[4]; socket.Receive(count, count.Length, SocketFlags.None); //La taille du message est maintenant connue: byte[] msg = new byte[BitConverter.ToInt32(count, 0)]; socket.Receive(msg, msg.Length, SocketFlags.None); //Création et levée de l'évènement: ClientEventArgs e = new ClientEventArgs(msg); clientSocketReceiveEvent(this, e); } catch { //Erreur durant l'envoi du message break; } } }
/// <summary> /// Méthode du processus léger écoutant les messages du serveur. Le processus léger est bloquant sur le receive, et implique que la taille du message soit contenue dans les quatre premiers octets de celui-ci. /// Un event est levé à chaque réception de message. /// </summary> private void receiveMessage() { while (true) { try { //Les quatre premiers octets contiennent la taille du message: byte[] count = new byte[4]; socket.Receive(count, count.Length, SocketFlags.None); //La taille du message est maintenant connue: byte[] msg = new byte[BitConverter.ToInt32(count, 0)]; socket.Receive(msg, msg.Length, SocketFlags.None); sendLock = false; //Création et levée de l'évènement: ClientEventArgs e = new ClientEventArgs(msg); clientSocketReceiveEvent(this, e); } catch { //Erreur durant l'envoi du message break; } } }
public void clientEventFunc(object sender, SocketLibrary.ClientEventArgs e) { SetMsgecho(Encoding.Default.GetString(e.Msg)); }
private void HandleClientEvents(object sender, ClientEventArgs e) { ClientToolsEvent sta = null; //décoder message //déterminer type de message: ClientToolsEvent.typeEvent type = ClientToolsEvent.typeEvent.MESSAGE; sta = new ClientToolsEvent(type, new List<byte[]>() { new byte[] { } }, "0"); clientToolsReceiveEvent(this, sta); }
/// <summary> /// Intercepter un évenement, puis créer un ServerToolsEvent correspondant à son type. /// </summary> private void HandleClientEvents(object sender, ClientEventArgs e) { ClientToolsEvent sta = null; Message msg = MessageUtil.decoder(e.Msg); ClientToolsEvent.typeEvent type = ClientToolsEvent.typeEvent.MESSAGE; if (msg.ListParams.Count > 0) { if (DataUtils.isErrorMessage(msg.ListParams[0])) type = ClientToolsEvent.typeEvent.ERROR; else if (msg.ListParams[0] == DataUtils.EXTINCTION_CODE) type = ClientToolsEvent.typeEvent.EXTINCTION; } sta = new ClientToolsEvent(type, msg.ListParams, msg.Stamp); clientToolsReceiveEvent(this, sta); }