在C#中通过TCP套接字发送/接收图像

时间:2011-08-18 10:49:06

标签: c# sockets network-programming

我正在尝试将图像发送到连接到我的TCP Listner(服务器)的客户端。我通过网络成功发送和接收文本但我无法从我的服务器将图片发送到客户端。我想Dislpay放置在客户端窗口中的PictureBox中的图片。 这是我用来发送和接收文字的代码但不是图片

服务器

RECEIVER:

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();

客户端:

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();
        }

我想在客户端窗口中的名为 PBox1 的PictureBox中显示图片。

1 个答案:

答案 0 :(得分:3)

您可以使用StreamReaderStreamWriter来发送和接收文字。那些涉及文本。您实际上没有显示您尝试用于发送图片的代码,但从根本上说,您不得使用Reader / Writer除非你先执行某种额外的编码(例如base64)。

此外,除非您在发送后立即关闭写入套接字,否则您应该在数据之前写入数据长度(例如,4个字节),以便接收套接字知道需要接收多少。