六:创建WCF客户端程序
新建一个WinForm 项目WCF_WinformCient:
右击项目名称,选择“添加服务引用...”


app.config:
app.config代码:
xml version ="1.0" encoding ="utf-8" ?>
< configuration >
         < system.serviceModel >
                 < bindings >
                         < basicHttpBinding >
                                 < binding name ="BasicHttpBinding_IDataTransfers" closeTimeout ="00:01:00"
                                         openTimeout ="00:01:00" receiveTimeout ="00:10:00" sendTimeout ="00:01:00"
                                         allowCookies ="false" bypassProxyOnLocal ="false" hostNameComparisonMode ="StrongWildcard"
                                         maxBufferSize ="65536000" maxBufferPoolSize ="524288000" maxReceivedMessageSize ="65536000"
                                         messageEncoding ="Text" textEncoding ="utf-8" transferMode ="Buffered"
                                         useDefaultWebProxy ="true" >
                                         < readerQuotas maxDepth ="32" maxStringContentLength ="8192" maxArrayLength ="163840000"
                                                 maxBytesPerRead ="4096" maxNameTableCharCount ="16384" />
                                         < security mode ="None" >
                                                 < transport clientCredentialType ="None" proxyCredentialType ="None"
                                                        realm="" />
                                                 < message clientCredentialType ="UserName" algorithmSuite ="Default" />
                                         security >
                                 binding >
                         basicHttpBinding >
                 bindings >
                 < client >
                         < endpoint address ="http://localhost/WCFMassData/Service.svc/basic"
                                 binding ="basicHttpBinding" bindingConfiguration ="BasicHttpBinding_IDataTransfers"
                                 contract ="WS.IDataTransfers" name ="BasicHttpBinding_IDataTransfers" />
                 client >
         system.serviceModel >
configuration >

最后添加form1窗体:
form1.cs:
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.ComponentModel;

using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WCF_WinformCient
{
         public partial class Form1 : Form
        {
                 public Form1()
                {
                        InitializeComponent();
                }
                 private void Form1_Load( object sender, EventArgs e)
                {
                         //实例化WCF客户端
                        
                        WS.DataTransfersClient client = new WS.DataTransfersClient( "BasicHttpBinding_IDataTransfers");
                    
                        MemoryStream stream = new MemoryStream();
                         byte[] buffer;
                         //获取所用块压缩流,并组装
                        buffer = client.GetCurrentBuffer();

                         //while (client.ReadNextBuffer())
                        stream.Write(buffer,0,buffer.Length);
                        stream.Position = 0;
                        buffer = new byte[stream.Length];
                        stream.Read(buffer,0,buffer.Length);
                        stream.Close();
                         //解压压缩流
                         byte[] bytes = Compression(buffer, CompressionMode.Decompress);
                        stream = new MemoryStream(bytes);
                        IFormatter formatter = new BinaryFormatter();
                         //反序列化
                        DataSet ds = (DataSet)formatter.Deserialize(stream);
                        stream.Close();
                         this.dataGridView1.DataSource = ds;
                         this.dataGridView1.DataMember = "test";
                         this.label1.Text = ds.Tables[0].Rows.Count.ToString();
                        client.Close();



                }
                 private byte[] Compression( byte[] data, CompressionMode mode)
                {
                        DeflateStream zip = null;
                         try
                        {
                                 if (mode == CompressionMode.Compress)
                                {
                                        MemoryStream ms = new MemoryStream();
                                        zip = new DeflateStream(ms, mode, true);
                                        zip.Write(data, 0, data.Length);
                                        zip.Close();
                                         return ms.ToArray();
                                }
                                 else
                                {
                                        MemoryStream ms = new MemoryStream();
                                        ms.Write(data, 0, data.Length);
                                        ms.Flush();
                                        ms.Position = 0;
                                        zip = new DeflateStream(ms, mode, true);
                                        MemoryStream os = new MemoryStream();
                                         int SIZE = 1024;
                                         byte[] buf = new byte[SIZE];
                                         int l = 0;
                                         do
                                        {
                                                l = zip.Read(buf, 0, SIZE);
                                                 if (l == 0) l = zip.Read(buf, 0, SIZE);
                                                os.Write(buf, 0, l);
                                        } while (l != 0);
                                        zip.Close();
                                         return os.ToArray();
                                }
                        }
                         catch
                        {
                                 if (zip != null) zip.Close();
                                 return null;
                        }
                         finally
                        {
                                 if (zip != null) zip.Close();
                        }
                }
        }
}