求C#socket文件传输示例
最好有断点续传,异步传输,传输大文件的功能
------解决方案--------------------断点续传也有一个配置文件和下载文件一起,它记录了上一次下载的位置
------解决方案--------------------服务器端
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace TCP
{
   public partial class MainForm : Form
   {
       public MainForm()
       {
           InitializeComponent();
           Control.CheckForIllegalCrossThreadCalls = false;
       }
       IPEndPoint ipe = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2000);
       Socket sk = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个
       private void button1_Click(object sender, EventArgs e)
       {
           try
           {
               sk.Bind(ipe);//绑定(异常:在其上下文中,该请求的地址无效。)
               MessageBox.Show("绑定服务器成功!", "提示");
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message,"提示");
               return;
           }
           //设置 监听队列 长度为10(同时能够处理 10个连接请求)
           sk.Listen(10);
           Thread myth = new Thread(new ThreadStart(get_client_msg));
           myth.IsBackground = true;
           myth.Start();
       }
       Socket sokMsg = null;
       //等待客户发送信息.....
       private void get_client_msg()
       {
           string recvStr = "";
           byte[] recvBytes = new byte[1024];
           int bytes;
           sokMsg = sk.Accept();
           while (true)
           {
               //监听到请求,立即创建负责与该客户端套接字通信的套接字.注:当客户端绑定到本服务器时,才会读过此行堵塞状态。             
               bytes = sokMsg.Receive(recvBytes, recvBytes.Length, 0);//从客户端接受信息
               recvStr += Encoding.UTF8.GetString(recvBytes, 0, bytes);
               MessageBox.Show(recvStr,"服务器端程序");
           }
       }
       private void button2_Click(object sender, EventArgs e)
       {
           string sendStr = "这是来自服务器端的测试信息。\n";
           byte[] bs = Encoding.UTF8.GetBytes(sendStr);
           sokMsg.Send(bs);
       }
   }
------解决方案--------------------客户端
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace TCPClient
{
   public partial class TCPClient : Form
   {
       public TCPClient()
       {
           InitializeComponent();
       }
       IPEndPoint ipe = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2000);//把ip和端口转化为IPEndPoint实例
       Socket sk = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket
       private void button1_Click(object sender, EventArgs e)
       {
           try
           {
               sk.Connect(ipe);//连接到服务器
               MessageBox.Show("连接成功!", "提示");
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message,"提示");
               return;
           }
           Thread myth = new Thread(new ThreadStart(get_server_msg));
           myth.IsBackground = true;
           myth.Start();