部落格搬家工具c/s實現方式

來源:互聯網
上載者:User
部落格搬家其實就是抓取資料,然後再提交資料,如果是自己辦的網站,比如說,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下再發就好了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.