Comment récuperer valeur module [Résolu]

flatron123 49 Messages postés mardi 11 mars 2008Date d'inscription 29 juin 2008 Dernière intervention - 9 juin 2008 à 11:32 - Dernière réponse : manouyah 1 Messages postés lundi 11 février 2008Date d'inscription 18 septembre 2008 Dernière intervention
- 18 sept. 2008 à 18:14
Bonjour à toutes et à tous,

Petite question bête: comment récuperer une valeur dans un module pour l'afficher dans une textbox? (Je n'ai pas réussi à mettre en oeuvre les idées trouvées sur le site). Je post ce que je veux récuperer:

dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom)

dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf(

"$"))msg(

"From client - " + clNo +
" : " + dataFromClient)

J'aimerai pouvoir afficher le "datafromclient".

Merci pour votre aide et bonne journée.

flatron123
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention - 9 juin 2008 à 11:58
3
Merci
Salut,
Il faut voir comment sont codées tes valeurs dans ton BytesForm
est-ce que c'est simplement des valeurs à afficher les unes à la suite des autres
Dans ce cas un code tout pourri du genre
msgbox (cstr(Asc(datafromclient(0))) pour le premier octet
(a améliorer en utilisant les belles fonctions du .net)
Sinon, il faut calculer ta valeur à afficher,
ex : si c'est un integer (2 bytes)  -> V=datafromclient(0)*256+datafromclient(1) (si poid fort, poid faible)
Bref plus de précisions serait les bienvenues....
@+
Megafan

Merci cs_Megafan 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de cs_Megafan
Meilleure réponse
cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention - 10 juin 2008 à 11:59
3
Merci
A y'est j'ai finit le 'squelette'
on pourra en rediscuter apres
ton e-mail please
@+
Megafan

Merci cs_Megafan 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de cs_Megafan
flatron123 49 Messages postés mardi 11 mars 2008Date d'inscription 29 juin 2008 Dernière intervention - 9 juin 2008 à 12:02
0
Merci
Merci de ta réponse. Plus de précisions (je ne savais pas que cela pouvait rentrer en compte):

Dim



bytesFrom(10024)

As



Byte
Commenter la réponse de flatron123
flatron123 49 Messages postés mardi 11 mars 2008Date d'inscription 29 juin 2008 Dernière intervention - 9 juin 2008 à 12:15
0
Merci
Je reformule (au cas ou):

En fait, j'ai un module qui travaille sur la console (appli de serveur - multi client) que j'ai récupéré sur le site. Mais celui-ci n'est qu'une "brique" d'une autre appli, qui dispose d'une interface. J'aimerai, au lieu d'afficher ça dans la console, l'afficher dans une listbox (et masquer la console, tant qu'a faire) car je veux pouvoir travailler sur le texte transférer.

Merci pour votre aide.

Flatron123
Commenter la réponse de flatron123
cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention - 9 juin 2008 à 14:07
0
Merci
A prori la premiera version suggérée te suffit,
par contre tu aurais pu avois ton tableau une valeur sur 2 ou 4 octets (voir plaus) plus à convertir et afficher sous forme de texte. Dans ce cas la méthode aurais été difference --> d'ou les precisions
Content d'avoir plu t'aider
@+
Megafan

PS : cstr(asc(..... : c'est tout pourri essaye de trouver mieux.
Commenter la réponse de cs_Megafan
flatron123 49 Messages postés mardi 11 mars 2008Date d'inscription 29 juin 2008 Dernière intervention - 9 juin 2008 à 14:48
0
Merci
Ben je n'ai pas encore réglé le problème en fait. Bon, voici mon module:


Imports System.Net.Sockets



Imports



System.Text


Imports



System.Windows.Forms


Module



Module1


Dim
clientsList

As



New
Hashtable


Sub
Main()


Dim
serverSocket

As



New
TcpListener(8888)


Dim
clientSocket

As
TcpClient


Dim
infiniteCounter

As



Integer






Dim
counter

As



Integer

serverSocket.Start()


msg(




"Chat Server Started ...."
)counter = 0

infiniteCounter = 0


For
infiniteCounter = 1

To
2infiniteCounter = 1

counter += 1

clientSocket = serverSocket.AcceptTcpClient()


Dim
bytesFrom(10024)

As



Byte






Dim
dataFromClient

As



String






Dim
networkStream

As
NetworkStream = _clientSocket.GetStream()

networkStream.Read(bytesFrom, 0,


CInt
(clientSocket.ReceiveBufferSize))dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom)

dataFromClient = _

dataFromClient.Substring(0, dataFromClient.IndexOf(


"$"
))clientsList(dataFromClient) = clientSocket

broadcast(dataFromClient +


" Joined "
, dataFromClient,

False
)msg(dataFromClient +


" Joined chat room "
)


Dim
client

As



New
handleClinetclient.startClient(clientSocket, dataFromClient, clientsList)


Next

clientSocket.Close()


serverSocket.Stop()


msg(




"exit"
)Console.ReadLine()


End



Sub






Public



Sub
msg(

ByVal
mesg

As



String
)mesg.Trim()

Console.WriteLine(


" >> "
+ mesg)


End



Sub






Private



Sub
broadcast(

ByVal
msg

As



String
, _


ByVal
uName

As



String
,

ByVal
flag

As



Boolean
)


Dim
Item

As
DictionaryEntry


For



Each
Item

In
clientsList


Dim
broadcastSocket

As
TcpClientbroadcastSocket =


CType
(Item.Value, TcpClient)


Dim
broadcastStream

As
NetworkStream = _broadcastSocket.GetStream()


Dim
broadcastBytes

As
[Byte]()


If
flag =

True



Then

broadcastBytes = Encoding.ASCII.GetBytes(uName +




" says : "
+ msg)


Else

broadcastBytes = Encoding.ASCII.GetBytes(msg)







End



If

broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length)


broadcastStream.Flush()







Next






End



Sub






Public



Class
handleClinet


Dim
clientSocket

As
TcpClient


Dim
clNo

As



String






Dim
clientsList

As
Hashtable


Public



Sub
startClient(

ByVal
inClientSocket

As
TcpClient, _


ByVal
clineNo

As



String
,

ByVal
cList

As
Hashtable)


Me
.clientSocket = inClientSocket


Me
.clNo = clineNo


Me
.clientsList = cList


Dim
ctThread

As
Threading.Thread =

New
Threading.Thread(

AddressOf
doChat)ctThread.Start()


End



Sub






Private



Sub
doChat()


Dim
infiniteCounter

As



Integer






Dim
requestCount

As



Integer






Dim
bytesFrom(10024)

As



Byte






Dim
dataFromClient

As



String






Dim
sendBytes

As
[Byte]()


Dim
serverResponse

As



String






Dim
rCount

As



String

requestCount = 0







For
infiniteCounter = 1

To
2infiniteCounter = 1


Try

requestCount = requestCount + 1







Dim
networkStream

As
NetworkStream = _clientSocket.GetStream()

networkStream.Read(bytesFrom, 0,


CInt
(clientSocket.ReceiveBufferSize))dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom)

dataFromClient =

dataFromClient.Substring(0, dataFromClient.IndexOf(


"$"
))msg(


"From client - "
+ clNo +

" : "
+ dataFromClient)rCount = Convert.ToString(requestCount)

broadcast(dataFromClient, clNo,


True
)


Catch
ex

As
ExceptionMsgBox(ex.ToString)


End



Try






Next






End



Sub









End



ClassEnd





Module

Ce que j'essaye de faire? Je voudrais qu'au lieu de la console, tout ceci se fasse dans une form (avec une listbox remplaçant la console), un déclenchement du start par un bouton (idem pour la cloture). Et je n'y arrive pas...

Si quelqu'un peut me souffler une idée svp?

En tout cas, merci de ton aide megafan :)

Merci

Flatron123
Commenter la réponse de flatron123
cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention - 9 juin 2008 à 20:44
0
Merci
Salut,
Pas trop le temps ce soir, je regarde deamain promis.
@+
Megafan
Commenter la réponse de cs_Megafan
cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention - 10 juin 2008 à 11:18
0
Merci
Salut,
j'ai commencé à regardé ton truc, je te prepare une version winform
@+
Megafan
Commenter la réponse de cs_Megafan
flatron123 49 Messages postés mardi 11 mars 2008Date d'inscription 29 juin 2008 Dernière intervention - 10 juin 2008 à 11:50
0
Merci
Merci Megafan :)

C'est très sympa de ta part :)

flatron123
Commenter la réponse de flatron123
flatron123 49 Messages postés mardi 11 mars 2008Date d'inscription 29 juin 2008 Dernière intervention - 10 juin 2008 à 12:03
0
Merci
flatron@hotmail.fr
Commenter la réponse de flatron123
flatron123 49 Messages postés mardi 11 mars 2008Date d'inscription 29 juin 2008 Dernière intervention - 10 juin 2008 à 12:35
0
Merci
Merci Megafan, c'est parfait, vraiment nickel.

Concernant les fonctions asynchrones, tu peux m'expliquer ce qu'elles font "physiquement" parlant? Et en quoi ne sont elles pas bloquantes? Quels est le risque de fonctions bloquantes, la perte de données?

Merci en tout cas, c'est sympas d'y passer du temps :)
Commenter la réponse de flatron123
cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention - 10 juin 2008 à 14:08
0
Merci
Salut,
Content d'avoir pu t'aider.
Les fonctions asynchrones : Tu n'est pas obligé d'attendre dans un thread l'arrivée ou l'envoi de données. C'est le systéme qui génére un evenment tout seul lorsque des donnees arrivent.
Aucun risque de perte de donnée, par contre des performances plus important en cas d'un grand nombre de connexion.
Voila.
Tu me tiens au courant si tu as des questions.
@+
megafan
Commenter la réponse de cs_Megafan
flatron123 49 Messages postés mardi 11 mars 2008Date d'inscription 29 juin 2008 Dernière intervention - 10 juin 2008 à 15:03
0
Merci
Ok. Et étant donné que je dimensionne mon appli pour une moyenne de 5 Client environ, il est préférable d'opter pour de l'asynchrone alors? Comment remplacer une source synchrone par une asynchrone? On peut prendre le socket de ta source HTTP asynchrone?

Merci :)

flatron123
Commenter la réponse de flatron123
cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention - 10 juin 2008 à 15:50
0
Merci
re
Pour 5 clients reste en synchrone,  quand je parle d'un grand nombre de connexions c'est plusieurs milliers.
Par contre pour le fun tu peux essayer avec des sockets asynchrones.
Dans ce cas oublie le stream du client et utilise le socket pour l'envoi et la reception.
@+
Megafan
Commenter la réponse de cs_Megafan
manouyah 1 Messages postés lundi 11 février 2008Date d'inscription 18 septembre 2008 Dernière intervention - 18 sept. 2008 à 18:14
0
Merci
salut svp,est ce que vous pouvez m'envoyer la version qu'a réalisé Megafan, celle qui est un form et non pas une console ???
Merci d'avance et svp voici mon email "emna777777@hotmail.com",le plus t^ot possible je vous en serais reconnaissante!
Commenter la réponse de manouyah

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.