客户端发送要下载的请求,如:
1、发送下载申请,如发送了字符串:downloadReq
2、发送要下载的相对目录,如:\\工程部文档
3、将接收到的文件存储到事先设定好的位置服务端接收请求并提供下载目录及目录下所有文件的功能:
1、接收到客户端传来的请求并转到相应的下载方法,得到字符串:downloadReq
2、接收客户端传来的文件目录: \\工程部文档,在服务端拼接好下载路径如:f:\\xxx公司\\工程部文档;将文档目录及相关文件传给客户端求代码,伪代码亦可,想了解一下socket的思路和通信方式

解决方案 »

  1.   

    你可以参考一下:http://blog.chinaunix.net/uid-21768364-id-3244512.html
    客户端发起socket请求,服务端对这个请求进行识别、响应。对于目录的形式,可以传xml文件,也可以传json字符串到客户端。
      

  2.   

    读取文件流,用socket发送出去(考虑到数据可能比较大,编号+分块+校验+异步发送)
      

  3.   

    楼主的需求明明是要了解 FTP 的工作方式,它是建立在 socket 的基础上的。
      

  4.   

    ftp是明确了不让用的,所以要写socket传输。
      

  5.   

    求一些伪代码,我已经写了client-server上传文件目录的代码了,下载这里因为存在一个请求,再返回来有点绕所以想先搞明白过程
      

  6.   

    ftp是明确了不让用的,所以要写socket传输。
    FTP 这么好用,把 FTP 搞明白了,照着写一个就好了,感觉楼主要重新发明轮子,舍近求远。
      

  7.   

    唉,给你写个 HttpListner的吧。你可以放在你的wpf、windows service程序中。我这里仅仅用个console做例子。:using System;
    using System.IO;
    using System.Net;
    using System.Threading;namespace ConsoleApplication1
    {
        class Program
        {
            private static HttpListener listener;        static void Main(string[] args)
            {
                listener = new HttpListener();
                listener.Prefixes.Add("http://+:2013/");
                listener.Start();
                listener.BeginGetContext(MainProcess, null);
                Console.WriteLine(".................按Ctrl+C键退出");
                new ManualResetEvent(false).WaitOne();
            }        private static void MainProcess(IAsyncResult e)
            {
                var context = listener.EndGetContext(e);
                listener.BeginGetContext(MainProcess, null);
                MainProcess(context);
            }        private static void MainProcess(HttpListenerContext context)
            {
                context.Response.AddHeader("Server", "wuwei-2013");
                var uri = context.Request.Url;
                var path = uri.AbsolutePath;
                if (path.StartsWith("/download/"))
                {
                    var file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, path.Substring(10));
                    var buffer = new byte[800000];
                    var len = 0;
                    var stream = context.Response.OutputStream;
                    using (var fs = File.OpenRead(file))
                    {
                        while ((len = fs.Read(buffer, 0, buffer.Length)) > 0)
                            stream.Write(buffer, 0, len);
                    }
                }
                context.Response.Close();
            }
        }}
    运行它,然后别的程序就可以通过类似 new WebClient().DownloadFile("http://xxx.yyyy:2013/download/xx/yy.jpg")这样的代码读取文件。当然,也可以使用 DownloadData。也可以加上 url 参数例如 "http://xxx.yyyy:2013/download/xx/yy.jpg?username=wuwei&class=a“,然后在服务器端根据 context.Request.QueryString[...] 读取参数值进行动态处理。
      

  8.   

    ftp是明确了不让用的,所以要写socket传输。
    FTP 这么好用,把 FTP 搞明白了,照着写一个就好了,感觉楼主要重新发明轮子,舍近求远。
    不是偶不喜欢用ftp,ftp的早先早都写好了,后来客户一看是ftp说涉及安全问题不允许使用,这才找其他方法写上传下载的。
      

  9.   

    FTP本身并没有安全问题,造成安全隐患的是FTP的使用者(管理者),对用户以及敏感目录的权限设置不当,而且FTP中也可以启用SSL加强安全验证的
    技术本身并没问题,可能是你们的客户曾经吃过FTP的亏吧你可以自己利用FTP去实现,FTP只是通信协议而已
      

  10.   

    ftp的已经实现了,客户说不可以用ftp。所以才放弃ftp,换的。