Mi hanno suggerito di utilizzare i canali specificando il canale.. dove diregere il tipo di flusso...
ma non riesco a dividere i 2 flussi vi posto il codice aggiornato NON funzionante i 2 flussi sono uniti...

SERVER
codice:
Imports System.Net.Sockets
Imports System.Text.UTF8Encoding


Public Class frmMain
    Public Const ChatM As String = "775|"
    Public Const CamM As String = "776|"
    Dim Listener As TcpListener
    Dim Client As TcpClient
    Dim Stream As NetworkStream
    Private Sub Server_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Nickname.Text = "kerberos5"

        Chat.Text = "Conversazione" & vbCrLf
        Chat.ReadOnly = True

        Listener = New TcpListener(8080)
        Listener.Start()

        Timer1.Start()

    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        If Client.Available > 0 Then
            Dim x(Client.Available - 1) As Byte
            Stream.Read(x, 0, x.Length)
            Dim text As String = UTF8.GetString(x)
            Chat.Text = Chat.Text & text & vbCrLf
        End If
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If Listener.Pending = True Then
            Timer1.Stop()
            Client = Listener.AcceptTcpClient()
            Listener.Stop()
            Stream = Client.GetStream()
            Timer2.Start()
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            Dim y() As Byte = UTF8.GetBytes(Nickname.Text & ": " & Messaggio.Text)
            Stream.Write(y, 0, y.Length)
            Chat.Text = Chat.Text & Nickname.Text & ": " & Messaggio.Text & vbCrLf
            Messaggio.Text = Nothing
        Catch ex As NullReferenceException
            MsgBox("Non si è ancora connesso nessuno, aspetta e riprova!")
        Catch ex2 As System.IO.IOException
            MsgBox("Il destinatario del messaggio si è scollegato o ha conflitti di IP!")
        End Try
    End Sub



    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Chat.Text = "Conversazione" & vbCrLf
    End Sub


    Public Shared Function ByteToBmp(ByVal _imgByteArray As Byte()) As System.Drawing.Bitmap
        Dim _ms As New Global.System.IO.MemoryStream(_imgByteArray, 0, _imgByteArray.Length)
        _ms.Write(_imgByteArray, 0, _imgByteArray.Length)
        Dim _bmp As New System.Drawing.Bitmap(_ms)
        _ms.Flush()
        _ms.Dispose()
        Return _bmp
    End Function

    Public Shared Function Foo(ByVal eChannel As String, ByVal iMessage As String) 'Pass the channel and message to the subroutine
        Dim eMessage As String
        eMessage = eChannel & iMessage
    End Function

    Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
        If Client.Available > 0 Then
            Dim ss(Client.Available - 1) As Byte
            Stream.Read(ss, 0, ss.Length)
            If UTF8.GetString(ss) = "776|" Then 'provo a fargli leggere il canale...??
                pView.Image = ByteToBmp(ss)
            End If
        End If
    End Sub
End Class
CLIENT:
codice:
Imports System.Net.Sockets
Imports System.Text.UTF8Encoding
Imports System.IO
Imports System.Runtime.InteropServices

Public Class frmMain
    Public Const ChatM As String = "775|"
    Public Const CamM As String = "776|"
    'Webcam
    Public Touchless As New TouchlessLib.TouchlessMgr
    Public Camera1 As TouchlessLib.Camera = Touchless.Cameras.ElementAt(0)
    Dim IP As System.Net.IPHostEntry = System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName)

    Dim client As TcpClient
    Dim Stream As NetworkStream

    Private Sub Client_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If System.IO.File.Exists(Application.StartupPath & "\" & "WebCamLib.dll") = False Then
            Dim B() As Byte
            Dim RM As Resources.ResourceManager
            RM = New Resources.ResourceManager("vbClient.Resources", System.Reflection.Assembly.GetExecutingAssembly)
            B = RM.GetObject("WebCamLib")
            System.IO.File.WriteAllBytes(Application.StartupPath & "\" & "WebCamLib.dll", B)
        End If

        Nickname.Text = My.User.Name
        TextBox2.Text = "Conversazione" & vbCrLf
        TextBox2.ReadOnly = True

        Try

            Touchless.CurrentCamera = Camera1
            Touchless.CurrentCamera.CaptureHeight = 240
            Touchless.CurrentCamera.CaptureWidth = 320
            Timer2.Start()
            Call connect()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Public Sub connect()
        Dim Address As Net.IPAddress
        Net.IPAddress.TryParse(Me.txtip.Text, Address)
        client = New TcpClient
        client.Connect(Address, Me.txtport.Text)
        If client.Connected Then
            Stream = client.GetStream
            Me.Timer1.Start()
            Me.TextBox2.Text = Me.TextBox2.Text & "Connessione effettuata." & vbCrLf
            Stream.Write(UTF8.GetBytes("Si è connesso " & Me.Nickname.Text & "!"), 0, UTF8.GetBytes("Si è connesso " & Me.Nickname.Text & "!").Length)
        Else
            Me.TextBox2.Text = Me.TextBox2.Text & "Impossibile connettersi..." & vbCrLf
        End If
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If client.Available > 0 Then
            Dim x(client.Available - 1) As Byte
            Stream.Read(x, 0, x.Length)
            Dim text As String = UTF8.GetString(x)
            TextBox2.Text = TextBox2.Text & text & vbCrLf

        End If
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        TextBox2.Text = "Conversazione" & vbCrLf
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            'invio il messaggio di chat specificando il canale convertito in byte
            'Dim y() As Byte = UTF8.GetBytes(Foo(ChatM, Nickname.Text & ": " & TextBox1.Text))
            Dim y() As Byte = UTF8.GetBytes(Nickname.Text & ": " & TextBox1.Text)
            Stream.Write(y, 0, y.Length)
            TextBox2.Text = TextBox2.Text & Nickname.Text & ": " & TextBox1.Text & vbCrLf
            TextBox1.Text = Nothing
        Catch ex As NullReferenceException
            MsgBox("Non sei collegato con nessuno!")
        Catch ex As System.IO.IOException
            MsgBox("Il destinatario si è scollegato o ha conflitti di IP!")
        End Try
    End Sub


    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        pView.Image = Touchless.CurrentCamera.GetCurrentImage
        Dim ss() As Byte = BmpToByte(pView.Image) 'converto frame bmp in byte
        Dim ChaCam() As Byte = UTF8.GetBytes(CamM) 'carico l'identificativo del canale nella varibile
        Stream.Write(ChaCam, 0, ChaCam.Length) 'invio ???
        Stream.Write(ss, 1, ss.Length) 'invio flusso dati della cam
    End Sub

    'funzione converti from BMP To Byte
    Public Shared Function BmpToByte(ByVal _bitmap As System.Drawing.Bitmap) As Byte()
        Dim _ms As New Global.System.IO.MemoryStream()
        _bitmap.Save(_ms, System.Drawing.Imaging.ImageFormat.Bmp)
        Dim _bmpArray As Byte()
        _bmpArray = _ms.ToArray()
        _ms.Flush()
        _ms.Dispose()
        Return _bmpArray
    End Function
    'Pass the channel and message to the subroutine
    Public Shared Function Foo(ByVal eChannel As String, ByVal iMessage As String)
        Dim eMessage As String
        eMessage = eChannel & iMessage
    End Function
End Class
qualcuno mi può dare una mano... grazie in anticipo...