Moritus
Messages postés130Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention23 novembre 2011
-
31 déc. 2010 à 19:30
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
1 janv. 2011 à 19:17
Bonjour à tous,
J'ai quelque soucis avec un code qui envoi du texte entre un app client et une app serveur...
Lorsque je met le code dans une sub et que j'appel la sub avec une variable, ca me donne une erreur code serveur et si j'appel la sub sans variable ca fonctionne...
Voici les 2 code
Code Client
Imports System.Net.Sockets
Imports System.Text
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SendMessage("Test de mes")
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
msg("Client Started")
Connect("ADRESSE IP ENLEVER", 8888)
Label1.Text = "Client Socket Program - Server Connected ..."
End Sub
Sub msg(ByVal mesg As String)
TextBox1.Text = TextBox1.Text + Environment.NewLine + " >> " + mesg
End Sub
Dim clientSocket As New System.Net.Sockets.TcpClient()
Dim serverStream As NetworkStream
Public Sub Connect(ByVal clientIP As String, ByVal clientPort As Integer)
clientSocket.Connect(clientIP, clientPort)
End Sub
Public Sub SendMessage(ByVal clientMessage As String)
Dim serverStream As NetworkStream = clientSocket.GetStream()
clientMessage += "&"
Dim outStream As Byte() = System.Text.Encoding.ASCII.GetBytes(clientMessage)
serverStream.Write(outStream, 0, outStream.Length)
serverStream.Flush()
Dim inStream(10024) As Byte
serverStream.Read(inStream, 0, CInt(clientSocket.ReceiveBufferSize))
Dim returndata As String = _
System.Text.Encoding.ASCII.GetString(inStream)
msg("Data from Server : " + returndata)
End Sub
End Class
Code Serveur
Imports System.Net.Sockets
Imports System.Text
Imports System.Net
Module Module1
Sub Main()
Dim serverSocket As New TcpListener(Dns.GetHostEntry(Dns.GetHostName).AddressList.GetValue(0), 8888)
Dim requestCount As Integer
Dim clientSocket As TcpClient
serverSocket.Start()
msg("Server Started")
clientSocket = serverSocket.AcceptTcpClient()
msg("Accept connection from client")
requestCount = 0
While (True)
Try
requestCount = requestCount + 1
Dim networkStream As NetworkStream = _
clientSocket.GetStream()
Dim bytesFrom(10024) As Byte
networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize))
Dim dataFromClient As String = _
System.Text.Encoding.ASCII.GetString(bytesFrom)
dataFromClient = _
dataFromClient.Substring(0, dataFromClient.IndexOf("$"))
msg("Data from client - " + dataFromClient)
Dim serverResponse As String = _
"Server response " + Convert.ToString(requestCount)
Dim sendBytes As [Byte]() = _
Encoding.ASCII.GetBytes(serverResponse)
networkStream.Write(sendBytes, 0, sendBytes.Length)
networkStream.Flush()
msg(serverResponse)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End While
clientSocket.Close()
serverSocket.Stop()
msg("exit")
Console.ReadLine()
End Sub
Sub msg(ByVal mesg As String)
mesg.Trim()
Console.WriteLine(" >> " + mesg)
End Sub
End Module
Donc, dans la sub SendMessage, si j'utilise la ligne suivante
Dim outStream As Byte() = System.Text.Encoding.ASCII.GetBytes(clientMessage)
ouclientMessage est déclarer dans la sub, ca ne fonctionne pas mais par contre, si j'utilise la ligne:
Dim outStream As Byte() = System.Text.Encoding.ASCII.GetBytes("Test de message&")
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 1 janv. 2011 à 11:37
salut,
ton explication est un peu étrange....
tu envoies au moins un &, pour chercher la position d'un $
une fois ce problème corrigé et les variables correctement déclarées côté serveur, c'est à dire avant la boucle, çà semble fonctionner :
>> Server Started
>> Accept connection from client
>> Data from client - Test de mes
>> Server response 1
>> Data from client - Test de mes
>> Server response 2
>> Data from client - Test de mes
>> Server response 3
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 1 janv. 2011 à 19:17
while true
dim s as string = "chaine"
end while
avant même de tester j'ai de suite modifié
dim s as string
while true
s = "chaine"
end while
autant vb.net permet la déclaration et l'instanciation en une seule ligne, autant il me semble totalement illogique de faire ces 2 actions dans une boucle