我的C#程序中分别使用过socket和webclient。
其中webclient使用uploadfile方法上传一个ftp文件。可是在文件上传后,通过ftp服务器发现我的连接还存在,即使我调用了Dispose方法也没有作用,为什么?我该如何真正断开这个ftp连接?
代码如下:        private void Btn_Upload_Click(object sender, EventArgs e)
        {
            WebClient webClient = new WebClient();
            Uri uri = new Uri(string.Format("ftp://{0}/{1}", T_Server.Text, "Test.txt"));            webClient.Credentials = new NetworkCredential(T_User.Text, T_Pswd.Text);
            webClient.UploadFile(uri, "Test.txt");
            webClient.Dispose();
        }
socket连接也有类似问题,连接并没有真正断开,请问我该如何处理??

解决方案 »

  1.   

    socket直接掉close()方法就行,WebClient确实没找到关闭方法,微软的示例是关闭从他那里得到的reader,代码是这样:
            WebClient client = new WebClient ();        // Add a user agent header in case the 
            // requested URI contains a query.        client.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");        Stream data = client.OpenRead (args[0]);
            StreamReader reader = new StreamReader (data);
            string s = reader.ReadToEnd ();
            Console.WriteLine (s);
            data.Close ();
            reader.Close ();
      

  2.   

    weberwong:感谢你的回复。
    我试了你的方法,可是连接仍旧存在,:(
      

  3.   

    weberwong: socket.close我看了,确实没有连接了。
    可是webclient的ftp连接依旧存在。
      

  4.   

    对于FTP的结束,你需要发送QUIT命令才能让FTP服务器认为你退出了。ABOR也可以,不过含义不同。你仅仅关闭Socket连接肯定是不够的。
      

  5.   

    这问题我也碰到了,只要把keepalive设为false就可以了。