2011-08-18 95 views
0

我想将图像发送到连接到我的TCP Listner(服务器)的客户端。我通过网络成功发送和接收文本,但无法将图片从我的服务器发送到客户端。我想Dislpay放置在客户端窗口中的PictureBox中的图片。 这里是我使用的发送和接收文本但不能想象一个代码通过TCP Socket发送/接收图像C#

SERVER:

接收机:

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在客户端窗口的PictureBox的图片。

+0

尝试在这些链接 http://stackoverflow.com/questions/6811760/sending-and-receiving-an-image-file-c HTTP给出的答案://stackoverflow.com/questions/2789294/tcp-client-server-image-transfer –

回答

3

由于您使用的是StreamReaderStreamWriter,因此您可以发送和接收文本。那些处理文本。您实际上没有显示您尝试用于发送图片的的代码,但基本上一定不是使用Reader/Writer,除非您先执行某种额外编码(例如base64)。另外,除非要在发送后立即关闭写入套接字,否则应该在数据之前写入数据长度(例如4个字节),以便接收套接字知道需要接收多少数据。