Oppure

Loading
04/01/14 2:37
MirkoDistefano
Salve a tutti,
ho creato un client ed un server che si connettono tra di loro.
Non appena il client si connette al server, attraverso un timer, deve inviargli l'indirizzo IP, il Nome Utente e il Nome Computer.
Il server una volta ricevute le tre stringhe deve deve elencarle in tre diverse label.
Il client invia questo testo:

#IP#IndirizzoIP

#NU#NomeUtente

#NC#NomeComputer

Il server invece ha questo codice:

Se il testo in arrivo inizia con "#IP#" elenca tutto il suo contenuto nella label1
Altrimenti se il testo in arrivo inizia con "#NU#" elenca tutto il suo contenuto nella label2
Altrimenti se il testo in arrivo inizia con "#NC#" elenca tutto il suo contenuto nella label3

Soltanto che il risultato nel server è questo:

Label1 =#IP#IndirizzoIP#NU#NomeUtente#NC#NomeComputer

Label2 =

Label3 =

In poche parole mi elenca tutto il contenuto sulla label1 lasciandomi vuote la label2 e la label3.
Non capisco come potrei risolvere la cosa, visto che il risultato che volevo era che la label1 mi elencasse l'IP, la label2 mi elencasse il nome utente e la label3 mi elencasse il nome del computer.
aaa
04/01/14 2:45
MirkoDistefano
PARTE DI CODICE DEL SERVER:
//Client = TcpClient
//Stream = NetworkStream

If Client.Connected Then
Stream = Client.GetStream()
timer1.start
End If


Private Sub Timer1_Tick //Interval 1
Dim Temp1() As Byte = UTF8.GetBytes("#IP#IndirizzoIP";)
Stream.Write(Temp1, 0, Temp1.Length)

Dim Temp2() As Byte = UTF8.GetBytes("#NU#NomeUtente";)
Stream.Write(Temp2, 0, Temp2.Length)

Dim Temp3() As Byte = UTF8.GetBytes("#NC#NomeComputer";)
Stream.Write(Temp3, 0, Temp3.Length)

Timer1.Stop()
End Sub

PARTE DI CODICE DEL CLIENT:

If Client.Available > 0 Then
Dim Temp(Client.Available - 1) As Byte
Stream.Read(Temp, 0, Temp.Length)
Dim TempString As String = UTF8.GetString(Temp)

If TempString.StartsWith ("#IP#";)
Label1.Text = TempString

ElseIf TempString.StartsWith ("#NU#";)
Label2.Text = TempString

ElseIf TempString.StartsWith ("#NC#";)
Label3.Text = TempString
End If
aaa
06/01/14 1:59
MirkoDistefano
??
aaa
07/01/14 13:13
amreo
Aggiungi ; o qualsiasi carattere per indicare separazione.
Se i dati inviati dal client non sono precisi, ma messaggi di Chat, a esempio, non ti conviene usare ; ma altri come non so %234&432£ , questa stringa non viene usato dai utenti.

modifica la parte di codice relativa al Client.Time_Click

Const SEP As String = ";"

Private Sub Timer1_Tick //Interval 1 
        Dim Temp1() As Byte = UTF8.GetBytes("#IP#IndirizzoIP" & SEP) 
        Stream.Write(Temp1, 0, Temp1.Length) 

        Dim Temp2() As Byte = UTF8.GetBytes("#NU#NomeUtente" & SEP) 
        Stream.Write(Temp2, 0, Temp2.Length) 

        Dim Temp3() As Byte = UTF8.GetBytes("#NC#NomeComputer" & SEP) 
        Stream.Write(Temp3, 0, Temp3.Length) 

        Timer1.Stop() 
End Sub 



e la ricezione del server.
Const SEP As String = ";"
If Client.Available > 0 Then 
Dim Temp(Client.Available - 1) As Byte 
Stream.Read(Temp, 0, Temp.Length) 
Dim TempString As String = UTF8.GetString(Temp) 
Dim Part() As String = TempString.Split(SEP) 'Aggiungi Split, dovrebbe esserci 3 elementi, se non è una chat. se si è 'meglio usare If
'Split separa una stringa in più stringa, le stringhe vengono divise dal parametro passato
If Part(0).StartsWith ("#IP#") 
Label1.Text = Part(0)
End If

If Part(1).StartsWith ("#NU#") 
Label2.Text = Part(1) 
End If

If Part(2).StartsWith ("#NC#") 
Label3.Text = Part(2)
End If



dovrebbe andare.
aaa
04/02/14 1:51
MirkoDistefano
Facendo così arriva solo #IP#IndirizzoIp nella Label1
Label2 e Label3 restano vuote.
aaa
04/02/14 2:01
MirkoDistefano
Funziona soltanto se la costante SEP è ";".
Se invece gli metto il "%234&432£" mi arriva soltanto #IP#IndirizzoIP nella Label1.
Come mai?
aaa