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); } } }
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); } }
//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); }); } }