Tableau de byte [Résolu]

Messages postés
19
Date d'inscription
mercredi 28 janvier 2004
Dernière intervention
26 septembre 2008
- 19 sept. 2008 à 23:30 - Dernière réponse :
Messages postés
19
Date d'inscription
mercredi 28 janvier 2004
Dernière intervention
26 septembre 2008
- 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 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
351
Date d'inscription
mercredi 21 juillet 2004
Dernière intervention
12 août 2009
- 20 sept. 2008 à 11:06
3
Merci
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

Merci cs_thierry la fronde 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de cs_thierry la fronde
Messages postés
351
Date d'inscription
mercredi 21 juillet 2004
Dernière intervention
12 août 2009
- 19 sept. 2008 à 23:43
0
Merci
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
Messages postés
19
Date d'inscription
mercredi 28 janvier 2004
Dernière intervention
26 septembre 2008
- 19 sept. 2008 à 23:58
0
Merci
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
Messages postés
19
Date d'inscription
mercredi 28 janvier 2004
Dernière intervention
26 septembre 2008
- 20 sept. 2008 à 00:33
0
Merci
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
Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Dernière intervention
7 janvier 2009
- 20 sept. 2008 à 04:07
0
Merci
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
Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Dernière intervention
7 janvier 2009
- 20 sept. 2008 à 04:15
0
Merci
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
Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Dernière intervention
7 janvier 2009
- 21 sept. 2008 à 00:42
0
Merci
"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
Messages postés
19
Date d'inscription
mercredi 28 janvier 2004
Dernière intervention
26 septembre 2008
- 21 sept. 2008 à 04:07
0
Merci
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
Messages postés
19
Date d'inscription
mercredi 28 janvier 2004
Dernière intervention
26 septembre 2008
- 21 sept. 2008 à 06:58
0
Merci
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.