日期:2014-05-17  浏览次数:21125 次

请教socket发送请求并下载文件...
客户端发送要下载的请求,如:
1、发送下载申请,如发送了字符串:downloadReq
2、发送要下载的相对目录,如:\\工程部文档
3、将接收到的文件存储到事先设定好的位置

服务端接收请求并提供下载目录及目录下所有文件的功能:
1、接收到客户端传来的请求并转到相应的下载方法,得到字符串:downloadReq
2、接收客户端传来的文件目录: \\工程部文档,在服务端拼接好下载路径如:f:\\xxx公司\\工程部文档;将文档目录及相关文件传给客户端

求代码,伪代码亦可,想了解一下socket的思路和通信方式

------解决方案--------------------
你可以参考一下:http://blog.chinaunix.net/uid-21768364-id-3244512.html
客户端发起socket请求,服务端对这个请求进行识别、响应。对于目录的形式,可以传xml文件,也可以传json字符串到客户端。
------解决方案--------------------
读取文件流,用socket发送出去(考虑到数据可能比较大,编号+分块+校验+异步发送)
------解决方案--------------------
最近做的一个通信的框架(整个项目的一部分)。就好象是给你做的一样。和你的要求几乎相当。不过正在和一家公司谈合作。暂时公司公开不了。
这个东西也就是一个字符的解析 数据流的接收与发送。
不过要做到阻塞与非阻塞模式还是需要一些功底的。
------解决方案--------------------
楼主的需求明明是要了解 FTP 的工作方式,它是建立在 socket 的基础上的。
------解决方案--------------------
引用:
Quote: 引用:

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

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

FTP 这么好用,把 FTP 搞明白了,照着写一个就好了,感觉楼主要重新发明轮子,舍近求远。
------解决方案--------------------
唉,给你写个 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(HttpListener