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

本文关键字:图像 套接字 TCP | 更新日期: 2023-09-27 18:05:53

我试图将图像发送到连接到我的TCP侦听器(服务器)的客户端。我成功地通过网络发送和接收文本,但我无法从我的服务器发送图片到客户端。我想在客户端窗口的图片框中显示图片。这是一个代码,我用来发送和接收文本,但不是图片

服务器:

接收机:

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();
        }
    }
发送者:

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

接收机:

    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的图片框中显示图片。

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

您发现发送和接收文本,因为您正在使用StreamReaderStreamWriter。它们处理文本。你没有实际显示的代码,你尝试用于发送图片,但基本上你不能使用Reader/Writer,除非你执行某种额外的编码首先(例如base64)。

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