Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    93

    [C#] valori incolonnati su invio dati socket

    salve ragazzi ho un problema sull'invio di dati ad un socket.minimizzo il codice per farvi capire:
    codice:
     
    while()
    {
         sendmess(null,tutti,"ciao")
      while()
        {
           sendmess(null,nomepersona,"bello")
        }
    
    }
    praticamente finche sono all'interno della while "bello" gli invii avvengono regolari e separati, mentre quando passo dalla while ciao il valore viene ricevuto dal client concatenato.in pratica riceve "ciaobello" e non prima "ciao" e successivamente "bello".questo non avviene sempre ma quasi sempre.è come se nel passaggio dal send ciao a quello bello i dati vengano scritti entambi sul buffer e letti una sola volta dal client...la funzione di invio è la classica con apertura dello stream e invio con buffer...
    codice:
    public void sendmess(TcpClient client,string name,string test)
            { 
                TcpClient tcpClient= new TcpClient();
                if (client != null) tcpClient = (TcpClient)client;
                if (name != null) tcpClient = (TcpClient)clientsList[name];
    
                NetworkStream clientStream = tcpClient.GetStream();
                ASCIIEncoding encoder = new ASCIIEncoding();
                byte[] buffer = encoder.GetBytes(test);
    
                clientStream.Write(buffer, 0, buffer.Length);
                clientStream.Flush();
            }

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    93
    in teoria ho trovato un modo per risolvere il problema.
    si tratta di mettere un terminatore per ogni comando per poi splittare il tutto lato client.
    se ad esempio metto un terminatore -- ad ogni invio, quando il client fa una doppia lettura, vado a splittare la stringa letta ed estrapolo i due comandi.
    es.
    il server manda "ciao--"
    il server manda "bello--"
    il client accidentalmente legge insieme i due comandi.
    splitto la lettura isolando i caratteri "--" e processo i due comandi separati.stilisticamente è corretto o bisogna procedere in maniera differente?

    p.s. ho scoperto che Regex.Split non riconosce i caratteri $.se faccio
    Regex.Split("ciao$$bello", "$$") non splitta un tubero.con tutti gli altri caratteri invece funziona.provare per credere

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.