Exemplo n.º 1
0
        public static void ReadCallback(IAsyncResult ar)
        {
            String content = String.Empty;

            // Retrieve the state object and the handler socket
            // from the asynchronous state object.
            StateObject state   = (StateObject)ar.AsyncState;
            Socket      handler = state.workSocket;

            // Read data from the client socket.
            int bytesRead = handler.EndReceive(ar);

            if (bytesRead > 0)
            {
                // There  might be more data, so store the data received so far.
                state.sb.Append(Encoding.ASCII.GetString(
                                    state.buffer, 0, bytesRead));

                // Check for end-of-file tag. If it is not there, read
                // more data.
                content = state.sb.ToString();
                if (content.IndexOf("<EOF>") > -1)
                {
                    // All the data has been read from the
                    // client. Display it on the console.
                    Console.WriteLine("Read {0} bytes from socket. \n Data : {1}",
                                      content.Length, content);

                    string      newsjsonstring = "";
                    List <News> newslist       = new List <News>();

                    if (content.Contains("[Get-All]"))
                    {
                        newsjsonstring = JsonSerializer.Serialize(CommunicationRepository.GetAllNews());
                        if (newsjsonstring.Equals("[]"))
                        {
                            newsjsonstring = "EMPTY";
                        }
                        Send(handler, newsjsonstring);
                    }
                    else if (content.Contains("[Insert-]"))
                    {
                        newsjsonstring = content.Substring(9, content.Length - (5 + 9));
                        newslist       = JsonSerializer.Deserialize <List <News> >(newsjsonstring);
                        //Instert into database;
                        CommunicationRepository.CreateNewsList(newslist);
                        Send(handler, "Data should have been created in database");
                    }

                    // Echo the data back to the client.
                    //Send(handler, content);
                }
                else
                {
                    // Not all data received. Get more.
                    handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
                                         new AsyncCallback(ReadCallback), state);
                }
            }
        }
Exemplo n.º 2
0
 public void addLinkToResult(string url, string title)
 {
     lock (theLinkLock)
     {
         Program.newsTitlePlusLink.Add(url, title);
         News news = new News()
         {
             Title = title, Url = url
         };
         CommunicationRepository.CreateNews(news);
     }
 }
Exemplo n.º 3
0
        //start
        private void Start()
        {
            CommunicationRepository.EmptyDatabase();
            theLinkLock = new object();

            Program.newsLinks         = new Queue <string>();
            Program.newsTitlePlusLink = new Dictionary <string, string>();
            ts = new CancellationTokenSource();

            Task task1 = Task.Run(() =>
            {
                ExtraBladetListener crawler = new ExtraBladetListener(this);
                crawler.crawl();
            });


            Task task2 = Task.Run(() =>
            {
                DrListener crawler = new DrListener(this);
                crawler.crawl();
            });

            Task task3 = Task.Run(() =>
            {
                Tv2Listener crawler = new Tv2Listener(this);
                crawler.crawl();
            });


            Task task4 = Task.Run(() =>
            {
                BtListener crawler = new BtListener(this);
                crawler.crawl();
            });
            Task task5 = Task.Run(() =>
            {
                DagensListener crawler = new DagensListener(this);
                crawler.crawl();
            });

            for (int i = 10 - 1; i >= 0; i--)
            {
                Task task11 = Task.Run(() =>
                {
                    string searchWord;
                    searchWord = "";
                    TitleCrawler titleCrawler = new TitleCrawler(this);
                    titleCrawler.GetTitles(ts.Token, searchWord);
                });
            }
        }