博客搬家工具c/s实现方式
手动搬是很累的,全自动的处理方法则是,由用户提交数据,然后,服务器程序等待事件触发,然后跑完整个搬家过程。半自动的方法则有两种,1,数据抓取到客户端,而后上传给服务器;2,有客户端控制,在服务器实行抓取。
全自动还不错,不过,一般来说搬家工具不是万能的,比如能抓sina的,未必能抓163的。因此,我个人认为还是有客户端控制,在服务器实行抓取最不错。
客户端设计来说,非常简单。要涉及,要搬家的博客网站,和在现在博客网站的用户,还有文章搬到现在网站的哪个分类。有些网站读取分页很麻烦,可以直接指定。
服务端,随便跑个dos窗口程序就行了。
首先设计一套简单的协议,比如
传输数据要求以 blogIntro开头,以blogend结尾,例如:blogIntro000000xizhen/partent/xizhen/sorts/0/0blogend
000000的地方放置包的长度,后面依次就是表单的信息,不用加密了,不过为了避免出现问题,数据最好url编码一下,就不会和分隔符'/'冲突了。
服务端监听,比如80000端口
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; }
进入接收数据模式
{
Console.WriteLine("\n等待连接
![](/Images/dot.gif)
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();
客户端发送就简单了,最好用个线程
{
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实现方式相关推荐
- 详细介绍如何自研一款博客搬家功能
前言 现在的技术博客(社区)越来越多,比如:imooc.spring4All.csdn.cnblogs或者iteye等,有很多朋友可能在这些网站上都发表过博文,当有一天我们想自己搞一个博客网站时就会发 ...
- 博客备份工具BlogDown 软件使用感想
最近在找博客备份相关的工具,看到了一个不错的博客备份工具BlogDown.使用博客备份BlogDown工具是可以制作博客电子书的.他支持导出多种文件格式,包括常用的电子书格式chm,还有word格式d ...
- 开源-一步步实现cnblogs博客采集工具-对项目需求的分析
欢迎继续关注CnblogsFan开源项目, 在昨天的项目时间中, 我们已经完成了项目开始前的一些准备工作, 今天, 我们就一起来分析下项目的一些需求. 在对需求进行分析之前我们先来再次熟悉下一个完整项 ...
- CentOS经常使用文件操作命令[百度博客搬家]
路径操作的CentOS经常使用命令 如今整理例如以下(百度博客搬家) cd pwd NO1. 显示当前路径 [root@rehat root]# pwd NO2. 返回用户主文件夹 [roo ...
- Mac平台上的一个MarkDown编辑器和静态博客生成工具-mweb mac最新版下载
MWeb for Mac是一款Markdown + 文档管理 + 静态网页生成,集大成的 Markdown 应用.MWeb界面简洁高效.功能强大,全面支持 Github Flavored Markdo ...
- 开源-一步步实现cnblogs博客采集工具-实现过滤设置对话框
报告下CnblogsFan项目最新的进度, 下午wid完成了过滤设置对话框的布局设计, 过滤设置暂时的设计如下: 1>. 根据感兴趣的关键词进行采集; 2>. 限定采集的随笔的发表时间; ...
- CSDN提供的博客搬家功能体验[持续跟踪]
因为各种原因,我们可能在不同的的地方写下博客,如何轻松实现"一文多载",往往很难. CSDN算是早期写博客的地方了,之后也尝试过其他博客工具,尝试过那么多之后,发现还CSDN总体还 ...
- blogbus博客搬家到wordpress
受朋友之托部署了一套wordpress,经过美工的一番努力几乎和之前的blogbus博客一模一样啊,朋友十分高兴,我也很高兴.系统是弄好了,可是之前的数据得想办法迁移过去. 有几种方案:1.手工迁移 ...
- 博客搬家到Octopress(Mac)
博客搬家到Octopress 2013年10月16日 之前一直在用Wordpress博客框架来写博客,一直没换过.但最近发现很多开发朋友都在使用Octopress,据说是一个面向黑客和开发者的博客,所 ...
- 《CSDN博客搬家》
进入创作者中心,选择工具->搬家 搬家要求:填入搬过去的博客地址.发布一条博客搬家的文章,填完之后点击申请搬家,等待审核成功即可
最新文章
- seaborn将图例放置在图像外部并使用move_legend函数将图例(legend)放置在图像的底部(bottom)、且单行展开显示
- 设计模式:迭代器模式
- Amazon S3数据存储
- 3、ShardingSphere 之 Sharding-JDBC 实现水平分库
- 关于活动目录中DNS没有SRV记录的解决方法
- linux上git克隆命令,Git clone命令用法
- 论文浅尝 - AAAI2020 | 小样本知识图谱补全
- 补发 四人小组 组队简单说明
- NIO+SocketChannel+Buffer+Selector 多路复用
- python数据结构与算法 pdf_『python核心编程pdf』数据结构与算法 Python语言描述
- 《javascript高级程序设计》核心知识总结
- ios游戏开发 Sprite Kit教程:初学者 3
- MATLAB读取MIT心电信号
- 使用Entrez下载文献
- 人工智能产品经理工作流程
- Android常用工具类...
- Hbuilder X npx browserslist@latest --update-db
- html多张图片合在一块,多张照片怎么拼在一起?10张以上多图拼图方法 超简单! (全文)...
- linux 写镜像工具下载,镜像写入工具下载
- 有趣又实用的4款微信小程序,有了它们,APP都要靠边站!
热门文章
- 用java开发pc软件
- mysql可以考什么证_MySQL有没有什么比较权威的认证考试呢?
- xcap 发包工具 使用帮助
- http://bbs.3dmgame.com/forum.php,3DM游戏运行库合集安装包v2.9
- 宗成庆统计自然语言处理第二版第13章读书笔记-文本分类与情感分类
- matlab 调制识别,调制方式识别仿真
- 关于DNF的多媒体包NPK文件的那些事儿(7) - IMGV5
- 红帽考试环境之RHCSA
- vibe算法 c++实现
- snap7 python连接_python snap7 windows-找不到snap7库