Tableau de byte [Résolu]

jabaka 19 Messages postés mercredi 28 janvier 2004Date d'inscription 26 septembre 2008 Dernière intervention - 19 sept. 2008 à 23:30 - Dernière réponse : jabaka 19 Messages postés mercredi 28 janvier 2004Date d'inscription 26 septembre 2008 Dernière intervention
- 21 sept. 2008 à 06:58
Salut j' ai le problème qui suit
<hr />Dim

buffer
As
Byte() =
New
Byte(1024) {}
client.Receive(buffer)

<hr />
A chaque fois le débogueur block sur la ligne en rouge en disant ceci:
La référence d'objet n'est pas définie à une instance d'un objet

Merci d'avance Jabaka
Afficher la suite 

9 réponses

Répondre au sujet
cs_thierry la fronde 351 Messages postés mercredi 21 juillet 2004Date d'inscription 12 août 2009 Dernière intervention - 20 sept. 2008 à 11:06
+3
Utile
bonjour

C'est peut-être l'instanciation de client1 qui n'est pas correct

voici un exemple vue dans la msdn

Dim endPoint As New IPEndPoint(address, port)

Dim tempSocket As New Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp)

tempSocket.Connect(endPoint)

thierry la fronde
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_thierry la fronde
cs_thierry la fronde 351 Messages postés mercredi 21 juillet 2004Date d'inscription 12 août 2009 Dernière intervention - 19 sept. 2008 à 23:43
0
Utile
bonsoir

dim buffer(1024) as Byte / ne serait pas mieux?
cette syntaxe compile mais je vois pas l'intérêt ou le rôle.. je manque d'info sur cette affaire

Dim buffer As Byte() = New Byte(1024) {}
thierry la fronde
Commenter la réponse de cs_thierry la fronde
jabaka 19 Messages postés mercredi 28 janvier 2004Date d'inscription 26 septembre 2008 Dernière intervention - 19 sept. 2008 à 23:58
0
Utile
Oui j'ai essayer
Dim buffer(1024) as Byte
 Cependant j'ai la même erreur qui revient
La référence d'objet n'est pas définie à une instance d'un objet
Ce pourrait-il que
client.Receive(buffer) donne une erreur si Receive recoit rien 
 Merci d'avance encore une fois au courageux volontaires :P
Commenter la réponse de jabaka
jabaka 19 Messages postés mercredi 28 janvier 2004Date d'inscription 26 septembre 2008 Dernière intervention - 20 sept. 2008 à 00:33
0
Utile
Le problème a vraiment l'air de venir du coté de client une instance de Socket
précédemment defenit comme suis car
Dim

client
As Socket  TOUT EST OK ICI
Dim

buffer1(1024)
As
Byte  TOUT A L AIR OK ICI client1.Receive(buffer1)  ICI CA BLOCK TOUJOURS

Dim clientcommand
As
String = System.Text.Encoding.ASCII.GetString(buffer1)  ICI TOUT FONCTIONNE SI CLIENT.RECEIVE EST IGNORER

J'ai essayer aussi client.Accept() et ca donne la meme erreur aussi
Commenter la réponse de jabaka
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 20 sept. 2008 à 04:07
0
Utile
Salut,
Débutant?
Quand tu vas sur Socket avec le curseur ça te donne quoi? "Nothing"
Donc:
Dim client
As New
Socket
Commenter la réponse de Kevin.Ory
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 20 sept. 2008 à 04:15
0
Utile
Une classe (un objet par référence) doit toujours être initialisé avant de pouvoir être utilisé. Et ceci se fait par ce qu'on appel le constructeur, la Sub New, appelé en ajoutant un New avant le type.
MonBouton = New Button

Les types par valeur, c'est à dire les types de base (Integer, Double...) ou les structures, ne nécécitent pas de constructeur, mais il sont possible.
Commenter la réponse de Kevin.Ory
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 21 sept. 2008 à 00:42
0
Utile
"C'est peut-être l'instanciation de client1 qui n'est pas correct"
Cela ne fait pas de doute, suffit de voir son code:
Dim clientAs Socket   TOUT EST OK ICI

Dim buffer1(1024)As Byte  TOUT A L AIR OK ICI

client1.Receive(buffer1) ICI CA BLOCK TOUJOURS

Voila comment il faut faire:

Dim clientAsNew Socket 

Dim buffer1(1023)As Byte 

client1.Receive(buffer1)

Lors de la déclaration d'un tableau on définit l'index du dernier élément du tableau. Donc pour avoir un tableau de 1024 élément, on déclare avec 1023
Commenter la réponse de Kevin.Ory
jabaka 19 Messages postés mercredi 28 janvier 2004Date d'inscription 26 septembre 2008 Dernière intervention - 21 sept. 2008 à 04:07
0
Utile
Merci pour vos réponses mais en passant les parametres a new Socket(socket.addressfamily,socket.sockettype,socket.ptotocoltype)
adress family c l'adresse localhost? ou celle du client qui se connecte
il me donne une erreur comme quoi je ne peut pas avoir 2 socket de lancer a la meme adresse je vais vous laisser une partie du code si vous pouvez trouver ce qui marche pas serait gentil :P Merci d'avance
<hr />Private

listener
As TcpListener

Private clientsocket
As Socket

Private
Sub StartListening()

Dim listener
As TcpListener =
New TcpListener(listenport)
listener.Start()

While
True
   Try
   Dim s
As Socket = listener.AcceptSocket()
   clientsocket = s          ca doit etre dans ce coin ici qu'il faudarait placer le new et j'aimerais
                                        que ServiceClient se lance seulement a l'acceptation listener.AcceptSocket()
   clientService =
New Thread(
New ThreadStart(
AddressOf ServiceClient)) 
   clientService.Start()

   Catch ex
As Exception

   RaiseEvent SMsg(ex.ToString)

   End
Try
End
While
'listener.Stop()
End
Sub

Private
Sub ServiceClient()

Dim keepalive
As
Boolean =
True
Dim buffer1(1024)
As
Byte
   While keepalive =
True
   clientsocket.Receive(buffer1)
<hr />
Commenter la réponse de jabaka
jabaka 19 Messages postés mercredi 28 janvier 2004Date d'inscription 26 septembre 2008 Dernière intervention - 21 sept. 2008 à 06:58
0
Utile
Finalement j'ai trouver une source sur le site qui va satisfaire tout ma curiosité coté socket cliente serveur merci à tous
Commenter la réponse de jabaka

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.