Отправка / получение изображения через TCP-сокет в C # - PullRequest
0 голосов
/ 18 августа 2011

Я пытаюсь отправить изображение клиенту, который подключен к моему TCP Listner (серверу).Я успешно отправляю и получаю текст по сети, но не могу отправить изображение клиенту с моего сервера.Я хочу отключить изображение в PictureBox, расположенное в окне клиента.Вот код, который я использую для отправки и получения текста НО НЕ ИЗОБРАЖЕНИЕ

СЕРВЕР:

ПОЛУЧАТЕЛЬ:

void TListner()
    {
        try
        {
            IPEndPoint ipendp = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8080);
            TcpListener tl = new TcpListener(ipendp);
            tl.Start();
            Socket s1 = tl.AcceptSocket(); ;
            NetworkStream ns = new NetworkStream(s1);
            StreamReader sr = new StreamReader(ns);

            while (true)
            {
                    textBox1.Text = sr.ReadLine();
            }
        }
        catch
        {
            Application.Exit();
        }

    }

SENDER:

        MemoryStream ms = new MemoryStream();
        sw.Write("TEST STRING");
        sw.Flush();

CLIENT:

RECEIVER:

    void TCP_CLIENT()
    {
        try
        {
            IPEndPoint ipendp = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8080);
            TcpClient tcpc = new TcpClient();
            tcpc.Connect(ipendp);
            NetworkStream ns = tcpc.GetStream();
            StreamReader sr = new StreamReader(ns);
            while (true)
            {
                textBox1.Text = sr.ReadLine();
            }
        }
        catch
        {
            Application.Exit();
        }

Я хочу отобразить изображение в PictureBox с именем PBox1 вОкно клиента.

1 Ответ

3 голосов
/ 18 августа 2011

Вы можете отправлять и получать текст, потому что вы используете StreamReader и StreamWriter.Те имеют дело с текстом.Вы на самом деле не показали код, который пытаетесь использовать для отправки изображений, но принципиально вы не должны использовать Reader / Writer, если не выполняете некоторыесначала добавьте дополнительное кодирование (например, base64).

Кроме того, если вы не собираетесь закрывать сокет записи сразу после отправки, вам, вероятно, следует записать длину данных (например, 4 байта) перед данными,принимающий сокет знает, сколько ему нужно получить.

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