IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

async Socket , la réference d'objet n'est pas définie à une instance d'objet


Sujet :

C#

  1. #1
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut async Socket , la réference d'objet n'est pas définie à une instance d'objet
    Bonjour,

    Je developpe un serveur qui recoit des sockets " protocole UDP". J'ai un petit problème. Quand j'execute mon programme je ne recois rien et le message suivant s'affiche :
    La réference d'objet n'est pas définie à une instance d'objet
    Et voila je crois que le prob est ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public static void ReceiveCallback(IAsyncResult ar)
    {
       . 
       .
       .
     int reclient = handler.EndReceive(ar); ;
    Auriez vous une solution ?
    Merci de m'aider.

    Voila mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    public class StateObject
    {
        // Client  socket.
        public Socket workSocket = null;
        //public Socket handler = null;
        // Size of receive buffer.
        public const int BufferSize = 1024;
        // Receive buffer.
        public byte[] buffer = new byte[BufferSize];
        // Received data string.
        public StringBuilder sb = new StringBuilder();
    }
    
    public class AsynchronousSocketListener
    {
        // Thread signal.
        public static ManualResetEvent allDone = new ManualResetEvent(false);
    
    
    
        public static void StartListening()
        {
                byte[] bytes = new Byte[1024];
                Socket workSocket = new Socket(AddressFamily.InterNetwork,
                SocketType.Dgram, ProtocolType.Udp);
               
                IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 80);
              
                IPEndPoint ipeSender = new IPEndPoint(IPAddress.Any, 0);
                
                EndPoint epSender = (EndPoint)ipeSender;
               
                
    
                Console.WriteLine("Waiting for a connection...");
               
                    // Create the state object.
                    StateObject state = new StateObject();
    
                  //  Socket handler = new Socket(AddressFamily.InterNetwork,   SocketType.Dgram, ProtocolType.Udp);
                   // Socket handler = state.workSocket;
                   
                    // Begin receiving the data from the remote device.
                    
                        workSocket.Bind(ipEndPoint);
                        while (true)
                        {
                            allDone.Reset();
    
                            workSocket.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReceiveCallback), state);
                            allDone.WaitOne();
                            
                        }
                    }
    
        public static void ReceiveCallback(IAsyncResult ar)
        {
            //allDone.Set();
            try
            {
                String content = String.Empty;
    
                // Retrieve the state object and the handler socket
                // from the asynchronous state object.
                StateObject state = (StateObject)ar.AsyncState;
                Socket handler = state.workSocket;
    
    
                // Read data from the client socket. 
                //int bytesRead = handler.EndReceive(ar);
                int reclient = handler.EndReceive(ar);
                if (reclient > 0)
                {
                    // There  might be more data, so store the data received so far.
                    state.sb.Append(Encoding.ASCII.GetString(state.buffer, 0, reclient));
    
    
                    // Check for end-of-file tag. If it is not there, read 
                    // more data.
                    content = state.sb.ToString();
                    if (content.IndexOf("<EOF>") > -1)
                    {
                        // All the data has been read from the 
                        // client. Display it on the console.
                        Console.WriteLine("Read {0} bytes from socket. \n Data : {1}", content.Length, content);
    
                        // Echo the data back to the client.
                        // Send(handler, content);
                    }
                    else
                    {
                        // Not all data received. Get more.
                        handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
                        new AsyncCallback(ReceiveCallback), state);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.Write("ReceiveCallback = " + ex.ToString());
                throw ex;
    
            }
        }

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Ca, ca veut dire que tu appelles un membre ou une méthode d'un objet qui est null. Le jeu va consister à trouver lequel, et où.

    Le plus simple, c'est d'utiliser le debugger. Place un point d'arrêt au début de ta fonction (avec la touche F9), lance ton appli, dès que la méthode est exécutée visual studio te permet de parcourir le code en pas à pas ; tu pourras voir l'état des variables, et repérer laquelle est nulle.
    ಠ_ಠ

Discussions similaires

  1. [Débutant] La référence d'objet n'est pas définie à une instance d'objet
    Par Crowww dans le forum VB.NET
    Réponses: 27
    Dernier message: 28/05/2013, 16h53
  2. Réponses: 4
    Dernier message: 08/01/2013, 13h11
  3. Réponses: 4
    Dernier message: 14/04/2010, 09h47
  4. La référence d'objet n'est pas définie à une instance d'objet
    Par Delphi-ne dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/07/2009, 15h22
  5. Réponses: 20
    Dernier message: 13/08/2007, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo