日期:2014-05-18  浏览次数:21013 次

急!!Socket/Ftp连接如何真正断开?
我的C#程序中分别使用过socket和webclient。
其中webclient使用uploadfile方法上传一个ftp文件。可是在文件上传后,通过ftp服务器发现我的连接还存在,即使我调用了Dispose方法也没有作用,为什么?我该如何真正断开这个ftp连接?
代码如下:
C# code

        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连接也有类似问题,连接并没有真正断开,请问我该如何处理??


------解决方案--------------------
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 ();

------解决方案--------------------
没做过,友情帮顶!
------解决方案--------------------
using
------解决方案--------------------
使其Session失效看看.
------解决方案--------------------
对于FTP的结束,你需要发送QUIT命令才能让FTP服务器认为你退出了。ABOR也可以,不过含义不同。

你仅仅关闭Socket连接肯定是不够的。