Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - c# ricezione testo e file via socket
Forum - C# / VB.NET - c# ricezione testo e file via socket

Avatar
jaco94++ (Normal User)
Expert


Messaggi: 203
Iscritto: 22/10/2008

Segnala al moderatore
Postato alle 14:42
Mercoledì, 09/11/2011
Salve a tutti

Ho un problema, la mia applicazione è un server che deve fare essenzialmente due cose:

1) deve ricevere del semplice testo e con degli if gestisco in base al comando arrivato cosa deve fare il server
2) deve poter ricevere file per salvarli o altro

il mio problema ora è: io uso tcplistener faccio accettare la connessione ad una socket non bloccante e ricevo il mio testo e lo elaboro in questo modo:

Codice sorgente - presumibilmente C# / VB.NET

  1. Socket me = newex.AcceptSocket();
  2.                     me.Blocking = false;
  3.  
  4.                     int totalbytes = 0;
  5.                     SocketError State = new SocketError();
  6.                     while (true && AbortLS == false)
  7.                     {
  8.                         Thread.Sleep(10);
  9.                         totalbytes = me.Receive(bytes, 0, 1, SocketFlags.None, out State);
  10.                         if (SocketError.Success == State)
  11.                         {
  12.                             if (totalbytes > 0)
  13.                             {
  14.                                 temp += System.Text.Encoding.ASCII.GetString(bytes, 0, totalbytes);
  15.                             }
  16.                             else
  17.                             {
  18.                                 me.Close();
  19.                                 me.Dispose();
  20.                                 break;
  21.                             }
  22.                         }
  23.                         else if (SocketError.WouldBlock != State)
  24.                         {
  25.                             MessageBox.Show("Socket Error", "Error");
  26.                             me.Close();
  27.                             me.Dispose();
  28.                             break;
  29.                         }
  30.                         if (me.Available == 0 && temp != string.Empty)
  31. {
  32. if(temp=="HH")
  33. {
  34. .....
  35. }
  36. temp="";
  37. }



il problema è che se ricevo un immagine ad esempio, il mio programma trasforma i byte dei file  in testo e questo presumo essere un grosso problema , vorrei modificare il codice in modo da si ricevere testo per i comandi ma nel caso mi arrivi un file salvarlo nel disco come posso risolvere ?

Ps: prima che arrivi un file viene inviato un comando al server che dovrebbe prepararlo per la ricezione di un file

Ultima modifica effettuata da jaco94++ il 09/11/2011 alle 14:45
PM
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 15:53
Mercoledì, 09/11/2011
Non c'è differenza tra testo e dati binari in genere.

Basta che prima di ogni invio di dati tu inserisca un "preambolo" che indichi che tipo e quale quantità di byte trasmetti.

Si non è male come idea! la provo ! - jaco94++ - 09/11/11 18:38


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM