Как отправить файл с сервера на клиент - PullRequest
0 голосов
/ 14 декабря 2018

У меня уже есть код для клиента A, чтобы отправить файл на сервер.Теперь, как я могу заставить сервер пересылать файл клиенту B?Кто-то, пожалуйста, помогите мне, дайте некоторый основной код, он не должен быть точно правильным, но по крайней мере у меня есть кое-что, чтобы следовать.Большое спасибо

1 Ответ

0 голосов
/ 14 декабря 2018

Небольшой пример: параметры - это файл, который вы хотите отправить в виде байта [], и словарь с именем клиента и TcpClient в качестве значения.

В этом случае вы отправите файл всем клиентам, ноконечно, вы можете адаптировать его только к одному клиенту.

    public static void SendBytesToClients(Byte[] broadcastBytes, Dictionary<string, TcpClient> receiverList)
    {
        foreach (var client in receiverList)
        {
            try
            {
                TcpClient broadcastSocket = (TcpClient)client.Value;
                NetworkStream broadcastStream = broadcastSocket.GetStream();
                broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length);
                broadcastStream.Flush();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                ClientConnector.ClientsList.Remove(client.Key);
            }
        }
    }

Клиент получает сообщение вроде:

    private void GetMessage()
    {
        while (_clientSocket.Connected)
        {
            _serverStream = _clientSocket.GetStream();
            byte[] inStream = new byte[_clientSocket.ReceiveBufferSize];
            int buffSize = _clientSocket.ReceiveBufferSize;
            _serverStream.Read(inStream, 0, buffSize);
            string returndata = System.Text.Encoding.ASCII.GetString(inStream);

            if (returndata.StartsWith("$CodeStart"))
            {
                CompileCode("" + returndata.Replace("$CodeStart", string.Empty));
            }
            else
            {
                _readData = "" + returndata;
                Msg();
            }
        }
    }

На ваш вопрос я предполагаю, что у вас уже установлен сетевой поток.

Учебное пособие, объясняющее, что именно вы хотите сделать, см. Здесь: http://csharp.net -informations.com / communications / csharp-chat-server-Program.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...