Ciao a tutti,
sto scrivendo un programma di tipo client-server in C# e sto implementando la navigazione in remoto. Le mie classi MyClient e MyServer implementano fondamentalmente i vari metodi delle socket per far comunicare 2 pc. Nel client ho un metodo Ricevi() che è questo:
codice:
public string Ricevi()
{
len = client.Receive(data, 0, data.Length, SocketFlags.None);
return Encoding.ASCII.GetString(data).Substring(0, len);
}
dove data è un campo della classe dichiarato e inizzializzato così:
codice:
byte[] data = new byte[1024];
mentre len è naturalmente dichiarato int:
Il mio problema è che adesso ricevo per un totale di 1024 byte mentre questa limitazione non ci dovrebbe essere, però non voglio ovviare al problema aumentando il valore di byte rivevuti inizializzando data a un valore maggiore, ma far si di ricevere 1024 byte alla volta finchè necessario.
Per rendere un' idea di come sto cercando di risolvere posto questa variante del metodo ricevi, che però è scorretta:
codice:
public string Ricevi()
{
len = client.Receive(data, 0, data.Length, SocketFlags.None);
if (len < 1024)
{
return Encoding.ASCII.GetString(data).Substring(0, len);
}
else
{
len = client.Receive(data, 0, data.Length, SocketFlags.None);
int i = 1;
while (len != 0)
{
len = client.Receive(data, 0, data.Length, SocketFlags.None);
data = new byte[i * 1024];
i = i + 1;
}
return Encoding.ASCII.GetString(data).Substring(0, len);
}
}
praticamente devo correggere la parte riguardante l' else.
Per piacere qualcuno mi può dare una mano a risolvere magari postandomi anche il codice corretto?... AIUTO!
Mi scuso in anticipo per la banalità del problema e per l' errore sicuramente stupido che commetto, ma in C# non ci programmo poi da tanto.
Non sono uno scroccone di codice, ma ci sto sbattendo la testa da giorni e non riesco proprio a risolvere.
GRAZIE!