| 12
 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
 
 | 
class C_Mysocket
    {
        //Classe socket local perso
        private int port;
        Socket listensock; 
        Socket activesock;
        IPEndPoint endpt;
        
        byte[] buff;
        
        
        /*** Fonctions membres ***/
        public C_Mysocket(int _port)
        {
            port = _port;
        }
        public int Start()
        {
            try
            {
                  //Ouverture du socket sur l'adresse locale et le port demandé
                    listensock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    IPHostEntry hostadr = Dns.GetHostEntry(Dns.GetHostName());
                    endpt = new IPEndPoint(hostadr.AddressList[0], port);
                    //Bind à un port , écoute sur ce port et démarre le thread asynchrone
                    listensock.Bind(endpt);
                    listensock.Listen(1);
                    //debut asynchrone - démarrage du thread d'accept | attente de la connection
                    listensock.BeginAccept(new AsyncCallback(connexionAcceptCallback), listensock);
                    return port;
             }
            catch (Exception se)
            {
                MessageBox.Show("Start method error message : "+ se.Message);
                return 0;
            }
        }
 void connexionAcceptCallback(IAsyncResult asyncResult)
        {
            try
            {
                activesock = listensock.EndAccept(asyncResult);
                activesock.BeginReceive(buff, 0, buff.Length, SocketFlags.None, receiveCallback, activesock);
            }
            
            catch (Exception se)
            {
                MessageBox.Show(se.Message);
            }
       }
...
 public void Send(string s)
        {
            try
            {
                buff = ASCIIEncoding.ASCII.GetBytes(s);
                activesock.BeginSend(buff, 0, buff.Length, SocketFlags.None, new AsyncCallback(this.sendCallback), activesock);
            }
            catch (Exception se)
            {
                MessageBox.Show(se.Message);
            }
        }
   private void sendCallback(IAsyncResult asyncResult)
        {
            int send = activesock.EndSend(asyncResult);
            
        }
.. | 
Partager