[ C# / Java ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by procedure, 2 Nov 2008.

  1. shiku

    shiku Member

    Joined:
    6 Aug 2009
    Messages:
    0
    Likes Received:
    25
    Reputations:
    1
    Разобрался. Если кому то нужно будет - вот метод. На вход передаем экземпляр 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;
            }
    
     
    #1641 shiku, 4 Feb 2014
    Last edited: 5 Feb 2014
  2. uShtorm

    uShtorm New Member

    Joined:
    22 Mar 2011
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Вопрос касается C# и работы с Сокетами.

    Локальная сеть имеет в интернете один внешний ip (все компьютеры, состоящие в локальной сети выходят в интернет под этим ip).
    Как отправить через сокет протоколом tcp сообщение на определенный компьютер в этой локальной сети? Как прослушать это сообщение?

    У меня рабочий код есть, но сообщения доставляются только если каждому компьютеру в интернет присвоен свой уникальный ip.
     
  3. DeepBlue7

    DeepBlue7 Elder - Старейшина

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12

    Ну.. можно делать подключение из локальной сети к твоему серверу, или upnp например :).
     
  4. ^NSA^

    ^NSA^ Elder - Старейшина

    Joined:
    3 Jul 2012
    Messages:
    66
    Likes Received:
    29
    Reputations:
    32
    Куда пропадает ноль и почему ?

    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
             */
        }
    }
    
    
    
     
  5. aleksand44

    aleksand44 New Member

    Joined:
    28 Mar 2013
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Подходит ли Java для написания программ по типу инвайтеров для соц.сетей, спамеров, чекеров? Или лучше для этого начинать изучать другие языки?
     
  6. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    939
    Likes Received:
    162
    Reputations:
    27
    незначащий ноль не выводится.
    http://progs.biz/csharp/csharp/lessons/039.aspx
     
  7. -=Cerberus=-

    -=Cerberus=- κρυπτός γράφω

    Joined:
    29 Apr 2012
    Messages:
    1,320
    Likes Received:
    919
    Reputations:
    391

    всё что может работать с сетью в принципе подходит для решения подобных задач

    попробуйте хотя бы пару языков программирования
    (Java,C#,PHP, Python и т д)
     
    #1647 -=Cerberus=-, 2 Apr 2014
    Last edited: 11 Apr 2014
  8. DemDot

    DemDot New Member

    Joined:
    9 Apr 2011
    Messages:
    42
    Likes Received:
    2
    Reputations:
    1
    Друзья, подскажите, почему не работает код

    PHP:
    public bool ExistingDataFile()
    {

                
    int a 5;
                
    int b 6;

               if 
    ? return true : return false;
            }
    Пишет, что нужны скобки, ставлю их, пишет другую ошибку.
    А в этом случае всё работает

    PHP:
    public bool ExistingDataFile()
    {

                
    int a 5;
                
    int b 6;
               
    if (
    b)
                {
                    return 
    true;
                }
    else 
                {
                    return 
    false;
                }
    }
     
    #1648 DemDot, 17 May 2014
    Last edited: 17 May 2014
  9. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    DemDot проще уже сразу возвращать значения, без ветвления:
    PHP:
     public bool ExistingDataFile()

        
    int a 5;
        
    int b 6
        return  
    b;
    }
    потому что if это if а тернарная операция это тернарная операция.
     
    #1649 seosimf, 17 May 2014
    Last edited: 17 May 2014
  10. DonaldDuck

    DonaldDuck New Member

    Joined:
    29 Apr 2012
    Messages:
    114
    Likes Received:
    3
    Reputations:
    1
    Как вообще пишутся программы на Java?

    Вот Паскаль, С, Асм - компилируешь текстовичок - получаешь *.ехе.
    Делфи - компилируешь проект из среды разработки - получаешь екзешник.
    ПХП - кладешь текстовичок на сервер и "заходишь" на него-запускаешь.
    Андроид - в Эклипсе делаешь апк, копируешь в устройство или в эмулятор.

    С Jаva задача такая.
    Есть ВПС. Еть Самба шара, которой пользуется с десяток человек. Все смотрят и дополняют 1 файл формата *.xls (MSOffice). Хочу, чтобы все они работали с этим файлом через веб-интерфейс. Использовать базы данных не предлагать. Java умеет многое, а вот как начать с ней работать - хз.
     
  11. Mandyson

    Mandyson New Member

    Joined:
    20 Mar 2011
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Вопрос C#.
    Как удобно разместить все dll в папку и ужу оттуда их подключать?
    Гугл далл ответ в виде <probing privatePath="путь"/> в App.config, но не работает(
     
  12. scr1m77

    scr1m77 Member

    Joined:
    29 Dec 2010
    Messages:
    2
    Likes Received:
    6
    Reputations:
    2
    Java

    Java. Помогите реализовать многопоточную загрузку 10-15 сайтов. Может есть готовые решения (многопоточные) по работе с вебом?
     
  13. Hk4q5

    Hk4q5 New Member

    Joined:
    12 Nov 2009
    Messages:
    23
    Likes Received:
    1
    Reputations:
    0
    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();
                }
            }
        }
    }
     
  14. NetSter

    NetSter Moderator

    Joined:
    30 Jul 2007
    Messages:
    810
    Likes Received:
    413
    Reputations:
    62
    ДЛЛки нужно подгружать\выгружать динамически ?

    не совсем понял суть того что ты хочешь реализовать, но если загрузка динамическая то тебе нужно копнуть в сторону:
    1) Application Domain
    2) Reflection
    3) Interfaces

    или же опиши более детально что тебе нужно запилить.
     
    _________________________
  15. Раrаdох

    Раrаdох Elder - Старейшина

    Joined:
    30 Jan 2014
    Messages:
    77
    Likes Received:
    95
    Reputations:
    15
    Всем привет. Язык C# (.NET)
    Итак:
    Есть встроенный в C# WebBrowser.
    Там пользователь кликает по ссылкам.
    Вопрос: как отследить, какие ссылки были нажаты (их URL) ?!
    Захватывать WebBrowser.URL не то, ведь пользователь может кликнуть на DOM ссылку - и вот как такую захватить мне не понятно.
    Буду очень благодарен за помощь.
     
  16. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    462
    Likes Received:
    38
    Reputations:
    1
    Code:
      private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
            {
            string currentURl= e.Url.ToString());
     
            }
    
    Если в других браузерах, то можно хэндлить.
     
  17. Раrаdох

    Раrаdох Elder - Старейшина

    Joined:
    30 Jan 2014
    Messages:
    77
    Likes Received:
    95
    Reputations:
    15
    Что у тебя за переменная "e" ? Если это равносильно WebBrowser.URL.ToString() (как я понял), то это не то.
    Смотри: Пользователь нажал допустим на JavaScript ссылку, он никуда не перешёл, то бишь URL браузера не изменился, однако, мне как то надо захватить нажатие по этой ссылке...
     
  18. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    942
    Likes Received:
    428
    Reputations:
    139
    Привет. Имеется студия 12я. Кто в курсе, где там для С# задаются ключи компиляции типа /unsafe, /checked и тому подобные?
     
  19. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    462
    Likes Received:
    38
    Reputations:
    1
    Вот Compiler Options

    Update: Пардоньте, я прочитал вначале 2013.
    2012
     
    #1659 Spot, 31 Aug 2014
    Last edited: 31 Aug 2014
  20. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    942
    Likes Received:
    428
    Reputations:
    139
    Я спрашивал куда в студии их прописывать. Если к примеру я собираю проект из командной строки, то пишу:

    csc /unsafe file.cs

    Но где это прописывать в студии?
     
Loading...