博客搬家其实就是抓取数据,然后再提交数据,如果是自己办的网站,比如说,sohu要把sina的博客搬过来,那就更加简单了。

手动搬是很累的,全自动的处理方法则是,由用户提交数据,然后,服务器程序等待事件触发,然后跑完整个搬家过程。半自动的方法则有两种,1,数据抓取到客户端,而后上传给服务器;2,有客户端控制,在服务器实行抓取。

全自动还不错,不过,一般来说搬家工具不是万能的,比如能抓sina的,未必能抓163的。因此,我个人认为还是有客户端控制,在服务器实行抓取最不错。

客户端设计来说,非常简单。要涉及,要搬家的博客网站,和在现在博客网站的用户,还有文章搬到现在网站的哪个分类。有些网站读取分页很麻烦,可以直接指定。

服务端,随便跑个dos窗口程序就行了。

首先设计一套简单的协议,比如
传输数据要求以   blogIntro开头,以blogend结尾,例如:blogIntro000000xizhen/partent/xizhen/sorts/0/0blogend
000000的地方放置包的长度,后面依次就是表单的信息,不用加密了,不过为了避免出现问题,数据最好url编码一下,就不会和分隔符'/'冲突了。

服务端监听,比如80000端口

            TcpListener listener = null;
            try
            {
                if (server.ipadd == null)
                    listener = new TcpListener(server.port);      //server.port就是8000端口啦
                else
                    listener = new TcpListener(server.ipadd, server.port);
                listener.Start();
            }
            catch (Exception e) { Console.WriteLine(e.Message); Console.Read(); return; }

进入接收数据模式

while (true)
{
                    Console.WriteLine("\n等待连接");
                    TcpClient client = listener.AcceptTcpClient();
                    Console.WriteLine("成功建立连接.");
                    //给客户端回点信息
                    string buff = "成功建立连接\r\n";
                    byte[] b = System.Text.Encoding.Default.GetBytes(buff);
                    client.Client.Send(b);
                    NetworkStream myNetworkStream = client.GetStream();
                    byte[] bytes = new byte[1024];
                    int bytesRead = myNetworkStream.Read(bytes, 0, bytes.Length);
                    string getstr = Encoding.Default.GetString(bytes, 0, bytesRead);
                    Console.WriteLine("收到数据:\n\n" + getstr);
                    string buff1 = "成功接收数据\r\n";
                    byte[] b1 = System.Text.Encoding.Default.GetBytes(buff1);
                    client.Client.Send(b1);
                    //收到数据下面就是做点事情了,怎么做,就要自己定义了。我想抓不通的博客,用个反射比较好
}
listener.Stop();

客户端发送就简单了,最好用个线程

        void SCAction()
        {
            Socket sc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
            Modules.ServerSet server = ReadConfig.getServer();
            try
            {
                sc.Connect(server.ipadd, server.port);
                  int bytesRec = sc.Receive(bytes);
                string resstr = Encoding.Default.GetString(bytes, 0, bytesRec);
                q.Enqueue(resstr);
                if (resstr.IndexOf("<success>") > -1)
                    bt1Stat = false;
            }
            catch
            {
                q.Enqueue("无法连接远程服务器,很可能是由于服务端软件未启动引起");
                sc.Close();
                return;
            }

string buff = msg;
            byte[] b = System.Text.Encoding.Default.GetBytes(buff);
            sc.Send(b);

while (sc.Connected)
            {
                if (systemClose)
                    break;
                try
                {
                    int bytesRec = sc.Receive(bytes);
                    string resstr = Encoding.Default.GetString(bytes, 0, bytesRec);
                    q.Enqueue(resstr);
                    if (resstr.IndexOf("<eof>") > -1)
                    {
                        q.Enqueue("****************************************************\r\n");
                        break;
                    }
                }
                catch { break; }
            }
           
            sc.Close();
            bt1Stat = true;
        }

操作密码自然是让指定的人用了,预先MD5下再发就好了。

博客搬家工具c/s实现方式相关推荐

  1. 详细介绍如何自研一款博客搬家功能

    前言 现在的技术博客(社区)越来越多,比如:imooc.spring4All.csdn.cnblogs或者iteye等,有很多朋友可能在这些网站上都发表过博文,当有一天我们想自己搞一个博客网站时就会发 ...

  2. 博客备份工具BlogDown 软件使用感想

    最近在找博客备份相关的工具,看到了一个不错的博客备份工具BlogDown.使用博客备份BlogDown工具是可以制作博客电子书的.他支持导出多种文件格式,包括常用的电子书格式chm,还有word格式d ...

  3. 开源-一步步实现cnblogs博客采集工具-对项目需求的分析

    欢迎继续关注CnblogsFan开源项目, 在昨天的项目时间中, 我们已经完成了项目开始前的一些准备工作, 今天, 我们就一起来分析下项目的一些需求. 在对需求进行分析之前我们先来再次熟悉下一个完整项 ...

  4. CentOS经常使用文件操作命令[百度博客搬家]

    路径操作的CentOS经常使用命令 如今整理例如以下(百度博客搬家)  cd pwd  NO1. 显示当前路径  [root@rehat root]# pwd  NO2. 返回用户主文件夹  [roo ...

  5. Mac平台上的一个MarkDown编辑器和静态博客生成工具-mweb mac最新版下载

    MWeb for Mac是一款Markdown + 文档管理 + 静态网页生成,集大成的 Markdown 应用.MWeb界面简洁高效.功能强大,全面支持 Github Flavored Markdo ...

  6. 开源-一步步实现cnblogs博客采集工具-实现过滤设置对话框

    报告下CnblogsFan项目最新的进度, 下午wid完成了过滤设置对话框的布局设计, 过滤设置暂时的设计如下: 1>. 根据感兴趣的关键词进行采集; 2>. 限定采集的随笔的发表时间; ...

  7. CSDN提供的博客搬家功能体验[持续跟踪]

    因为各种原因,我们可能在不同的的地方写下博客,如何轻松实现"一文多载",往往很难. CSDN算是早期写博客的地方了,之后也尝试过其他博客工具,尝试过那么多之后,发现还CSDN总体还 ...

  8. blogbus博客搬家到wordpress

    受朋友之托部署了一套wordpress,经过美工的一番努力几乎和之前的blogbus博客一模一样啊,朋友十分高兴,我也很高兴.系统是弄好了,可是之前的数据得想办法迁移过去. 有几种方案:1.手工迁移 ...

  9. 博客搬家到Octopress(Mac)

    博客搬家到Octopress 2013年10月16日 之前一直在用Wordpress博客框架来写博客,一直没换过.但最近发现很多开发朋友都在使用Octopress,据说是一个面向黑客和开发者的博客,所 ...

  10. 《CSDN博客搬家》

    进入创作者中心,选择工具->搬家 搬家要求:填入搬过去的博客地址.发布一条博客搬家的文章,填完之后点击申请搬家,等待审核成功即可

最新文章

  1. seaborn将图例放置在图像外部并使用move_legend函数将图例(legend)放置在图像的底部(bottom)、且单行展开显示
  2. 设计模式:迭代器模式
  3. Amazon S3数据存储
  4. 3、ShardingSphere 之 Sharding-JDBC 实现水平分库
  5. 关于活动目录中DNS没有SRV记录的解决方法
  6. linux上git克隆命令,Git clone命令用法
  7. 论文浅尝 - AAAI2020 | 小样本知识图谱补全
  8. 补发 四人小组 组队简单说明
  9. NIO+SocketChannel+Buffer+Selector 多路复用
  10. python数据结构与算法 pdf_『python核心编程pdf』数据结构与算法 Python语言描述
  11. 《javascript高级程序设计》核心知识总结
  12. ios游戏开发 Sprite Kit教程:初学者 3
  13. MATLAB读取MIT心电信号
  14. 使用Entrez下载文献
  15. 人工智能产品经理工作流程
  16. Android常用工具类...
  17. Hbuilder X npx browserslist@latest --update-db
  18. html多张图片合在一块,多张照片怎么拼在一起?10张以上多图拼图方法 超简单! (全文)...
  19. linux 写镜像工具下载,镜像写入工具下载
  20. 有趣又实用的4款微信小程序,有了它们,APP都要靠边站!

热门文章

  1. 用java开发pc软件
  2. mysql可以考什么证_MySQL有没有什么比较权威的认证考试呢?
  3. xcap 发包工具 使用帮助
  4. http://bbs.3dmgame.com/forum.php,3DM游戏运行库合集安装包v2.9
  5. 宗成庆统计自然语言处理第二版第13章读书笔记-文本分类与情感分类
  6. matlab 调制识别,调制方式识别仿真
  7. 关于DNF的多媒体包NPK文件的那些事儿(7) - IMGV5
  8. 红帽考试环境之RHCSA
  9. vibe算法 c++实现
  10. snap7 python连接_python snap7 windows-找不到snap7库