Разобрался. Если кому то нужно будет - вот метод. На вход передаем экземпляр memorystream с полученным овтетом сервера, на выходе распакованый, если есть необходимость, ответ: Code: string Ungzip(MemoryStream m1) { string page = ""; Encoding enc = Encoding.UTF8; try { var bytesReceived = m1.ToArray(); for (int i = 0; i < bytesReceived.Length; i++) { if (bytesReceived[i] == 13 && bytesReceived[i + 1] == 10 && bytesReceived[i + 2] == 13 && bytesReceived[i + 3] == 10) { var b = bytesReceived.Take(i).ToArray(); page = enc.GetString(b, 0, b.Length); bytesReceived = bytesReceived.Skip(i + 4).ToArray(); break; } } if (!page.Contains("gzip")) { page += enc.GetString(bytesReceived, 0, bytesReceived.Length); } else { GZipStream myGzip = new GZipStream(new MemoryStream(bytesReceived), CompressionMode.Decompress); using (MemoryStream m = new MemoryStream()) { byte[] buffer = new byte[1000]; int len = 0; while ((len = myGzip.Read(buffer, 0, buffer.Length)) > 0) { m.Write(buffer, 0, len); } bytesReceived = m.ToArray(); } page += enc.GetString(bytesReceived, 0, bytesReceived.Length); } } catch{} return page; }
Вопрос касается C# и работы с Сокетами. Локальная сеть имеет в интернете один внешний ip (все компьютеры, состоящие в локальной сети выходят в интернет под этим ip). Как отправить через сокет протоколом tcp сообщение на определенный компьютер в этой локальной сети? Как прослушать это сообщение? У меня рабочий код есть, но сообщения доставляются только если каждому компьютеру в интернет присвоен свой уникальный ip.
Куда пропадает ноль и почему ? Code: /** * * @author no */ public class Bitoperation { public static void main(String[] argc){ byte a =0b1100 , b =0b1010; byte rezult = (byte) (a | b); byte rezult2 = (byte) (a & b); byte rezult3 =(byte) (a ^ b); byte rezult4 =(byte) ~0b1011; System.err.println(Integer.toBinaryString(rezult)+" binary. number = "+rezult); System.err.println(Integer.toBinaryString(rezult2)+" binary. number = "+rezult2); //куда пропал ноль System.err.println(Integer.toBinaryString(rezult3)+" binary. number = "+rezult3); System.err.println(Integer.toBinaryString(rezult4)+" binary .number = "+rezult4); /** * Ouput console * 1110 binary = 14 * 1000 binary = 8 * 110 binary = 6 11111111111111111111111111110100 binary = -12 */ } }
Подходит ли Java для написания программ по типу инвайтеров для соц.сетей, спамеров, чекеров? Или лучше для этого начинать изучать другие языки?
всё что может работать с сетью в принципе подходит для решения подобных задач попробуйте хотя бы пару языков программирования (Java,C#,PHP, Python и т д)
Друзья, подскажите, почему не работает код PHP: public bool ExistingDataFile() { int a = 5; int b = 6; if a > b ? return true : return false; } Пишет, что нужны скобки, ставлю их, пишет другую ошибку. А в этом случае всё работает PHP: public bool ExistingDataFile() { int a = 5; int b = 6; if (a > b) { return true; } else { return false; } }
DemDot проще уже сразу возвращать значения, без ветвления: PHP: public bool ExistingDataFile() { int a = 5; int b = 6; return a > b; } потому что if это if а тернарная операция это тернарная операция.
Как вообще пишутся программы на Java? Вот Паскаль, С, Асм - компилируешь текстовичок - получаешь *.ехе. Делфи - компилируешь проект из среды разработки - получаешь екзешник. ПХП - кладешь текстовичок на сервер и "заходишь" на него-запускаешь. Андроид - в Эклипсе делаешь апк, копируешь в устройство или в эмулятор. С Jаva задача такая. Есть ВПС. Еть Самба шара, которой пользуется с десяток человек. Все смотрят и дополняют 1 файл формата *.xls (MSOffice). Хочу, чтобы все они работали с этим файлом через веб-интерфейс. Использовать базы данных не предлагать. Java умеет многое, а вот как начать с ней работать - хз.
Вопрос C#. Как удобно разместить все dll в папку и ужу оттуда их подключать? Гугл далл ответ в виде <probing privatePath="путь"/> в App.config, но не работает(
Java Java. Помогите реализовать многопоточную загрузку 10-15 сайтов. Может есть готовые решения (многопоточные) по работе с вебом?
C# перебор директорий web сервера Здравствуйте хочу написать свой сканер директорий веб сервера, но я слаб в C# и не как не могу просто представить как мне сделать примерно следующее: Допустим есть target (www.google.com) мне не понятно следующее: вывод результатов в DataGridView я не силен с формами и только начал практиковать с ними. я даже словами то не очень могу описать что хочу.... хочу что бы в DataGridView выводились директории с ответом 200 HTTP OK но на сервере есть вложенные папки !!! как мне все это собрать что бы весь процесс сканирования затронул вложенные папки а потом и просканировать файлы в найденных папках вот мой говнокод((( пожалуйста помогите дельными советами и примерами очень пригодится, заранее спасибо!!! Code: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Collections; using System.Net; using System.IO; namespace Scanner_ { class MainClass { static string Target, RequestUserAgent, ResultDirectory, DataDirectory; static string TempDirectory = "temp"; static string[] ReadFileD; static string[] ReadFileF; static int Threads, RequestTimeOut, ThreadTimeOut; static IEnumerator DList; static IEnumerator FList; static Queue<Exception> Exceptions = new Queue<Exception>(); static void SettingsLoad() { try { string[] lines = System.IO.File.ReadAllLines("Settings.cfg"); foreach (string line in lines) { string[] data = line.Split(':'); if (data[0].Equals("Target")) { Target = data[1]; } else if (data[0].Equals("Threads")) { Threads = Int32.Parse(data[1]); } else if (data[0].Equals("Thread-TimeOut (Anti-DDoS)")) { ThreadTimeOut = Int32.Parse(data[1]); } else if (data[0].Equals("Request-timeout")) { RequestTimeOut = Int32.Parse(data[1]); } else if (data[0].Equals("Result Directory")) { ResultDirectory = data[1]; } else if (data[0].Equals("Data Directory")) { DataDirectory = data[1]; } else if (data[0].Equals("User-Agent")) { RequestUserAgent = data[1]; } } } catch { Console.WriteLine("Невозможно загрузить файл конфигурации!"); } } static void Main(string[] args) { SettingsLoad(); Console.Write("==================== +++++++ ====================" + "\n"); Console.Write("Сканирование: " + Target + "\n"); Console.Write("Количество потоков: " + Threads + "\n"); Console.Write("Тайм-аут запроса: " + RequestTimeOut + "ms" + "\n"); Console.Write("Ожидание после запроса: " + ThreadTimeOut + "ms" + "\n\n"); Console.Write("==================== +++++++ ====================" + "\n"); if (!(Directory.Exists(ResultDirectory + "\\" + Target + "\\" + DateTime.Now.ToString(@"MM\.dd\.yyyy")))) { Directory.CreateDirectory(ResultDirectory + "\\" + Target + "\\" + DateTime.Now.ToString(@"MM\.dd\.yyyy")); } Thread.Sleep(2500); Console.Write("cmd:"); string cmd = Console.ReadLine(); bool ScanFile = false; bool ScanDirectory = false; bool ScanProxy = false; if (cmd == "help") { Console.Write("commands: (ScanD,ScanF ) "); } else if (cmd == "ScanD") // сканирование директорий { ScanDirectory = true; } else if (cmd == "ScanF") // сканирование файлов { ScanFile = true; } if (ScanDirectory == true) { ReadFileD = System.IO.File.ReadAllLines(DataDirectory + "\\DirectoryPatch.txt"); DList = ReadFileD.GetEnumerator(); ManualResetEvent[] handles = new ManualResetEvent[Threads]; for (int i = 0; i < Threads; i++) { handles[i] = new ManualResetEvent(false); (new Thread(new ParameterizedThreadStart(ScanD))).Start(handles[i]); } WaitHandle.WaitAll(handles); foreach (Exception ex in Exceptions) { Console.WriteLine(ex.Message); } } if (ScanFile == true) { ReadFileF = System.IO.File.ReadAllLines(DataDirectory + "\\FilePatch.txt"); FList = ReadFileF.GetEnumerator(); ManualResetEvent[] handles = new ManualResetEvent[Threads]; for (int i = 0; i < Threads; i++) { handles[i] = new ManualResetEvent(false); (new Thread(new ParameterizedThreadStart(ScanF))).Start(handles[i]); } WaitHandle.WaitAll(handles); foreach (Exception ex in Exceptions) { Console.WriteLine(ex.Message); } } } static void ScanF(object handle) { string FLine; while (true) { try { lock (FList) { if (FList.MoveNext()) { FLine = FList.Current as string; } else { break; } } try { HttpWebRequest ScanFReq = (HttpWebRequest)HttpWebRequest.Create("http://" + Target + "/" + FLine); ScanFReq.ProtocolVersion = new Version(1, 0); ScanFReq.Timeout = RequestTimeOut; ScanFReq.Method = "GET"; ScanFReq.UserAgent = RequestUserAgent; HttpWebResponse ScanFResp = (HttpWebResponse)ScanFReq.GetResponse(); Console.Write("Сканирование файла: (" + FLine + ") ответ от сервера: " + ScanFResp.StatusCode + "\n"); ScanFResp.Close(); Thread.Sleep(ThreadTimeOut); lock (FList) { StreamWriter WriteGodResult = new StreamWriter(ResultDirectory + "\\" + Target + "\\" + DateTime.Now.ToString(@"MM\.dd\.yyyy") + "\\" + ScanFResp.StatusCode + ".txt", true); WriteGodResult.Write("(" + Target + "/" + FLine + ") ответ от сервера: " + ScanFResp.StatusCode + "\r\n"); WriteGodResult.Close(); } } catch (WebException ScanFExcp) { Console.Write("Сканирование файла: (" + FLine + ") ответ от сервера: " + ((HttpWebResponse)ScanFExcp.Response).StatusCode + "\n"); lock (FList) { StreamWriter WriteBadResult = new StreamWriter(ResultDirectory + "\\" + Target + "\\" + DateTime.Now.ToString(@"MM\.dd\.yyyy") + "\\" + ((HttpWebResponse)ScanFExcp.Response).StatusCode + ".txt", true); WriteBadResult.Write("(" + Target + "/" + FLine + ") ответ от сервера: " + ((HttpWebResponse)ScanFExcp.Response).StatusCode + "\r\n"); WriteBadResult.Close(); } } } catch (ThreadAbortException) { break; } catch (Exception ex) { lock (Exceptions) { Exceptions.Enqueue(ex); } continue; } ((ManualResetEvent)handle).Set(); } } static void ScanD(object handle) { string DLine; while (true) { try { lock (DList) { if (DList.MoveNext()) { DLine = DList.Current as string; } else { break; } } try { HttpWebRequest ScanDReq = (HttpWebRequest)HttpWebRequest.Create("http://" + Target + "/" + DLine); ScanDReq.ProtocolVersion = new Version(1, 0); ScanDReq.Timeout = RequestTimeOut; ScanDReq.Method = "GET"; ScanDReq.UserAgent = RequestUserAgent; HttpWebResponse ScanDResp = (HttpWebResponse)ScanDReq.GetResponse(); Console.Write("Сканирование директории: (" + DLine + ") ответ от сервера: " + ScanDResp.StatusCode + "\n"); ScanDResp.Close(); Thread.Sleep(ThreadTimeOut); lock (DList) { StreamWriter SaveTmpResult = new StreamWriter(ResultDirectory + "\\" + TempDirectory + "\\" + Target + ".tmp", true); SaveTmpResult.Write(DLine + "\r\n"); SaveTmpResult.Close(); } lock (DList) { StreamWriter WriteGodResult = new StreamWriter(ResultDirectory + "\\" + Target + "\\" + DateTime.Now.ToString(@"MM\.dd\.yyyy") + "\\" + ScanDResp.StatusCode + ".txt", true); WriteGodResult.Write("(" + Target + "/" + DLine + ") ответ от сервера: " + ScanDResp.StatusCode + "\r\n"); WriteGodResult.Close(); } } catch (WebException ScanDExcp) { Console.Write("Сканирование директории: (" + DLine + ") ответ от сервера: " + ((HttpWebResponse)ScanDExcp.Response).StatusCode + "\n"); lock (DList) { StreamWriter WriteBadResult = new StreamWriter(ResultDirectory + "\\" + Target + "\\" + DateTime.Now.ToString(@"MM\.dd\.yyyy") + "\\" + ((HttpWebResponse)ScanDExcp.Response).StatusCode + ".txt", true); WriteBadResult.Write("(" + Target + "/" + DLine + ") ответ от сервера: " + ((HttpWebResponse)ScanDExcp.Response).StatusCode + "\r\n"); WriteBadResult.Close(); } } } catch (ThreadAbortException) { break; } catch (Exception ex) { lock (Exceptions) { Exceptions.Enqueue(ex); } continue; } ((ManualResetEvent)handle).Set(); } } } }
ДЛЛки нужно подгружать\выгружать динамически ? не совсем понял суть того что ты хочешь реализовать, но если загрузка динамическая то тебе нужно копнуть в сторону: 1) Application Domain 2) Reflection 3) Interfaces или же опиши более детально что тебе нужно запилить.
Всем привет. Язык C# (.NET) Итак: Есть встроенный в C# WebBrowser. Там пользователь кликает по ссылкам. Вопрос: как отследить, какие ссылки были нажаты (их URL) ?! Захватывать WebBrowser.URL не то, ведь пользователь может кликнуть на DOM ссылку - и вот как такую захватить мне не понятно. Буду очень благодарен за помощь.
Code: private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e) { string currentURl= e.Url.ToString()); } Если в других браузерах, то можно хэндлить.
Что у тебя за переменная "e" ? Если это равносильно WebBrowser.URL.ToString() (как я понял), то это не то. Смотри: Пользователь нажал допустим на JavaScript ссылку, он никуда не перешёл, то бишь URL браузера не изменился, однако, мне как то надо захватить нажатие по этой ссылке...
Привет. Имеется студия 12я. Кто в курсе, где там для С# задаются ключи компиляции типа /unsafe, /checked и тому подобные?
Я спрашивал куда в студии их прописывать. Если к примеру я собираю проект из командной строки, то пишу: csc /unsafe file.cs Но где это прописывать в студии?