/ / Odczytywanie danych ze strumienia sieciowego - c # -4.0

Odczytywanie danych ze strumienia sieciowego - c # -4.0

Mam prostego klienta TCP i kod odbiornika. Chcę przekazać nazwę pliku wraz z danymi pliku. Czy istnieje sposób na wysłanie pliku wraz z danymi pliku i odczytanie samej nazwy pliku ze strumienia sieciowego bez uszkadzania danych pliku?

Odpowiedzi:

0 dla odpowiedzi № 1

Oto sposób wysyłania zarówno nazwy pliku, jak iDane, które nie powinny być uszkodzone. Jeśli używasz serializacji, nie musisz ręcznie pisać i czytać nazwy pliku i zawartości osobno możesz po prostu wysłać i odczytać go jako pojedynczy obiekt i mieć ramową umowę z serializacją i deserializacją indywidualne właściwości.

[SerializableAttribute]
class Data
{
public string FileName;
public byte[] FileData;
}

Klient

string filePath = @"c:tempmyfile.txt";
TcpClient client = new TcpClient();
client.Connect("localhost", 8888);

Data data = new Data();
data.FileName = Path.GetFileName(filePath);
data.FileData = File.ReadAllBytes(filePath);

BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize( client.GetStream(), data);
client.Close();

serwer

TcpListener listener = new TcpListener(IPAddress.Loopback, 8888);
listener.Start();
TcpClient client = listener.AcceptTcpClient();

BinaryFormatter formatter = new BinaryFormatter();
Data data = (Data)formatter.Deserialize(client.GetStream());