Tableau de byte

Résolu
jabaka Messages postés 19 Date d'inscription mercredi 28 janvier 2004 Statut Membre Dernière intervention 26 septembre 2008 - 19 sept. 2008 à 23:30
jabaka Messages postés 19 Date d'inscription mercredi 28 janvier 2004 Statut Membre 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
A voir également:

9 réponses

cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
20 sept. 2008 à 11:06
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
3
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
19 sept. 2008 à 23:43
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
0
jabaka Messages postés 19 Date d'inscription mercredi 28 janvier 2004 Statut Membre Dernière intervention 26 septembre 2008
19 sept. 2008 à 23:58
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
0
jabaka Messages postés 19 Date d'inscription mercredi 28 janvier 2004 Statut Membre Dernière intervention 26 septembre 2008
20 sept. 2008 à 00:33
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
20 sept. 2008 à 04:07
Salut,
Débutant?
Quand tu vas sur Socket avec le curseur ça te donne quoi? "Nothing"
Donc:
Dim client
As New
Socket
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
20 sept. 2008 à 04:15
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.
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
21 sept. 2008 à 00:42
"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
0
jabaka Messages postés 19 Date d'inscription mercredi 28 janvier 2004 Statut Membre Dernière intervention 26 septembre 2008
21 sept. 2008 à 04:07
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 />
0
jabaka Messages postés 19 Date d'inscription mercredi 28 janvier 2004 Statut Membre Dernière intervention 26 septembre 2008
21 sept. 2008 à 06:58
Finalement j'ai trouver une source sur le site qui va satisfaire tout ma curiosité coté socket cliente serveur merci à tous
0
Rejoignez-nous