Изменение размера файла при использовании TCP - PullRequest
0 голосов
/ 06 декабря 2018

Я посылаю 4 МБ файла по tcp на локальный сервер.Но файл хранится на локальном сервере в 36 МБ.

В чем проблема?

Я конвертирую файл в строку (base64) и добавляю его в json.затем преобразуйте json в байт [] и отправьте его.

Клиент отправляет байт на сервер:

await nwStream.WriteAsync(json, 0, json.Length);

NetworkStream streams = client.GetStream();
int Q = 0;
int M = json.Length;
int ss = 150001;

bool go = true;
while (go)
{
    if(M< ss)
    {
        go = false;
        ss = M;
    }
    if (M < 0)
    {
        go = false;
        ss = M + ss;
    }
    await streams.WriteAsync(json, Q,ss);
    Q += ss;
    M -= ss;
}

и получает на стороне сервера байт []:

Byte[] bytes = new Byte[150001];
int i;
try
{
    // Loop to receive all the data sent by the client.
    while ((i = await stream.ReadAsync(bytes, 0, bytes.Length)) != 0)
    {
        // bytes contains received data in byte[].
        // Translate data bytes to a UTF-8 string.
        byte[] receivedBuffer = new byte[i];
        Array.Copy(bytes, receivedBuffer, i);
        data += System.Text.Encoding.UTF8.GetString(receivedBuffer);
        if (data.IndexOf("}") > 0)
        {
            break;
        }
    }


}
catch (Exception ex)
{

}

Редактировать:

и Сохранить файл. Я кодирую «данные» в строку UTF8, затем преобразую в DeserializeObject.

             var pi = Convert.FromBase64String(picbas64);
        var x = (Bitmap)((new ImageConverter()).ConvertFrom(pi));
        string path = @"pic\Operation\" + name + ".jpg";
        var ZZ = x;
        ZZ.Save(path);
        return path;
...