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

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

  1. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    911
    Likes Received:
    469
    Reputations:
    723
    [SMD], обычная ситуация с 1 потоком. Нужно распаралеливать. 1 поток обновляет форму, 2 - отправляет запросы.
     
    _________________________
  2. [SMD]

    [SMD] Member

    Joined:
    17 Nov 2010
    Messages:
    32
    Likes Received:
    5
    Reputations:
    0
    можешь показать пример или ссылку на пример, буду очень признателен.
     
  3. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    462
    Likes Received:
    38
    Reputations:
    1
    Для ознакомления с потоками всегда привожу эту статью. А вот и вторая часть где расписаны прелести BackgroundWorker и взаимодействия с UI.
     
  4. dars_go

    dars_go New Member

    Joined:
    22 Sep 2007
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Да, с этим понятное дело. но проблема в том что фтп то не факт что будет открыт вообще, т.е. нужно именно используя RDP протокол как-это это реализовать, или файл закинуть и запустить, вообщем в этом направлении.
     
  5. PC_20

    PC_20 Banned

    Joined:
    9 Oct 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Шифрование текста C#

    Всем здравствуйте! Помогите кто может...
    Есть таблица, в заголовках столбцов стоят буквы, а в строке цифры, соответственно нужно зашифровать. Но есть несколько столбцов, в названиях которых стоит не одна буква, а несколько, например "NO". Тогда данный цикл рассматривается каждую букву в отдельности (например: n=1,o=2,no=3) и на выводе получается такой шифр:12, вместо просто 3...пытался как вариант делать что-то типа result += s1.Replace("no", "3");, но тогда получается эта 3 добавляется после каждой буквы, поскольку цикл... :(
    Код для шифрования такой есть у меня:
    Code:
    string text = textBox2.Text; 
    for (int i = 0; i < text.Length; i++)
     { string letter = text[i].ToString(); 
    foreach (DataGridViewColumn column in dataGridView1.Columns) 
    { if (column.HeaderText == letter) 
    { string cellValue = dataGridView1.CurrentRow.Cells[column.Index].Value.ToString(); 
    var values = cellValue.Split(' ');
    int index = rnd.Next(values.Length); 
    result += values[index]; }
     }
     }
     listBox1.Items.Add(result);
     
  6. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    462
    Likes Received:
    38
    Reputations:
    1

    Не понял саму суть шифрования, обьясните не примере. Например: BING -> как это будет шифроваться и что будет на выходе?
     
  7. [SMD]

    [SMD] Member

    Joined:
    17 Nov 2010
    Messages:
    32
    Likes Received:
    5
    Reputations:
    0
    Помогите составить регулярку для такой строчки
    Code:
    <a href="http://site.ru/profile/?id=id5171258">id5171258</a>
    Нужно выдрать "id5171258"

    Делаю вот таким методом:
    Code:
    string pattern_pars = "регулярка";
    Regex regex_pars = new Regex(pattern_pars);
    Match match_pars = regex_pars.Match(html);
    Заранее очень признателен.
     
  8. FunOfGun

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

    Joined:
    5 Sep 2012
    Messages:
    391
    Likes Received:
    70
    Reputations:
    124
    Code:
    <a .+?>(.+?)</a>
     
    1 person likes this.
  9. [SMD]

    [SMD] Member

    Joined:
    17 Nov 2010
    Messages:
    32
    Likes Received:
    5
    Reputations:
    0
    Ребят, помогите, весь день сеня убил и код все равно не рабочий..


    вот завершающая часть кода реггера, проблема 100% в ней.. и в моем неумении делать запросы с "multipart/form-data" ..

    еще хотел спросить на счет этих цифр в запросе "23271238692" - это ведь просто рандомное число, ни на что не влияющее?


    Code:
    Random rnd = new Random();
    
                    int rnd_int = rnd.Next(0000, 9999);
                    string sQueryString = String.Empty;
    
    
                    sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"authenticity_token\"\n\n" + match_AUTH_TOKEN.Groups[1].ToString() + "\n";
                    sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"user[login]\"\n\n" + "sdfouihwjkbs23r5a" + "\n";
                    sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"user[name]\"\n\n" + "cvuisb sdfsdf" + "\n";
                    sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"user[password]\"\n\n" + "qwe123qwe" + "\n";
                    sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"user[password_confirmation]\"\n\n" + "qwe123qwe" + "\n";
                    sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"user[email]\"\n\n" + "zfvugwsknb@ksam.co" + "\n";
                    sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"user[language_id]\"\n\n" + "2" + "\n";
                    sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"captcha\"\n\n" + check + "\n";
                    sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"captcha_key\"\n\n" + match_cap2.Groups[1].ToString() + "\n";
                    sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"commit\"\n\n" + "Sign up\n-----------------------------23271238692" + rnd_int + "--";
    
    
    
    
                    HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create("http://site.com/register");
                    myHttpWebRequest.Method = "POST";
                    myHttpWebRequest.Referer = "http://site.com/signup";
                    myHttpWebRequest.AllowAutoRedirect = false;
                    myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1";
                    myHttpWebRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
                    myHttpWebRequest.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
                    myHttpWebRequest.ContentType = "multipart/form-data; boundary=---------------------------23271238692"+rnd_int;
                    myHttpWebRequest.Headers.Add(HttpRequestHeader.Cookie, sCookie);
                    //string sQueryString = "";
                    byte[] ByteArr = System.Text.Encoding.GetEncoding(1251).GetBytes(sQueryString);
                    myHttpWebRequest.ContentLength = ByteArr.Length;
                    myHttpWebRequest.GetRequestStream().Write(ByteArr, 0, ByteArr.Length);
                    // делаем запрос
                    HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                    html = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();

    вот оригинальный запрос, т.е. как должно быть

    Code:
    POST /register HTTP/1.1
    Host: site.com
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
    Referer: http://site.com/signup
    Cookie: cook
    Content-Type: multipart/form-data; boundary=---------------------------207991835220448
    Content-Length: 1251
    
    -----------------------------207991835220448
    Content-Disposition: form-data; name="authenticity_token"
    
    N5hOMmVyzz+zSiaPS9qrEeuVwrkfL92D+SUReDQSkgs=
    -----------------------------207991835220448
    Content-Disposition: form-data; name="user[login]"
    
    ijosdjfg982j
    -----------------------------207991835220448
    Content-Disposition: form-data; name="user[name]"
    
    sdkjfnhjk sdjfnk
    -----------------------------207991835220448
    Content-Disposition: form-data; name="user[password]"
    
    qwe123qwe
    -----------------------------207991835220448
    Content-Disposition: form-data; name="user[password_confirmation]"
    
    qwe123qwe
    -----------------------------207991835220448
    Content-Disposition: form-data; name="user[email]"
    
    dkgfuhjsb@ksie.rb
    -----------------------------207991835220448
    Content-Disposition: form-data; name="user[language_id]"
    
    2
    -----------------------------207991835220448
    Content-Disposition: form-data; name="captcha"
    
    kfglaf
    -----------------------------207991835220448
    Content-Disposition: form-data; name="captcha_key"
    
    96801d3925bb3c092713554191cf1b363630144a
    -----------------------------207991835220448
    Content-Disposition: form-data; name="commit"
    
    Sign up
    -----------------------------207991835220448--
    
    а вот то, что у меня выходит после запроса моего "софта"

    Code:
    POST /register HTTP/1.1
    Referer: http://site.com/signup
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
    Content-Type: multipart/form-data; boundary=---------------------------232712386921968
    Cookie: cook
    Host: site.com
    Content-Length: 1212
    Expect: 100-continue
    
    -----------------------------232712386921968
    Content-Disposition: form-data; name="authenticity_token"
    
    hYH2c9g4R0oFSEeNjfRXjoot8zCYNNOUc0XwmHRqvCg=
    -----------------------------232712386921968
    Content-Disposition: form-data; name="user[login]"
    
    sdfouihwjkbs23r5a
    -----------------------------232712386921968
    Content-Disposition: form-data; name="user[name]"
    
    cvuisb sdfsdf
    -----------------------------232712386921968
    Content-Disposition: form-data; name="user[password]"
    
    qwe123qwe
    -----------------------------232712386921968
    Content-Disposition: form-data; name="user[password_confirmation]"
    
    qwe123qwe
    -----------------------------232712386921968
    Content-Disposition: form-data; name="user[email]"
    
    zfvugwsknb@ksam.co
    -----------------------------232712386921968
    Content-Disposition: form-data; name="user[language_id]"
    
    2
    -----------------------------232712386921968
    Content-Disposition: form-data; name="captcha"
    
    geoliv
    -----------------------------232712386921968
    Content-Disposition: form-data; name="captcha_key"
    
    6a1a5cf90241c027b83afbb8930bc907da1fe50a
    -----------------------------232712386921968
    Content-Disposition: form-data; name="commit"
    
    Sign up
    -----------------------------232712386921968--
    в чем может быть проблема?
     
  10. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    911
    Likes Received:
    469
    Reputations:
    723
    [SMD] ,
    Это лишнее.
    Не нужно тебе отправлять этот boundary=---------------------------23271238692

    http://ru.wikipedia.org/wiki/MIME
     
    _________________________
  11. Chrome~

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

    Joined:
    13 Dec 2008
    Messages:
    939
    Likes Received:
    162
    Reputations:
    27
    Лол. А чем тогда разделять разные поля?

    [SMD], какой ответ отправляет сервер? Bad request?
    Здесь может быть ошибка при создании значения поля Content-Length. В твоем запросе это поле равняется 1212, хотя на самом деле 1252.
     
  12. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    911
    Likes Received:
    469
    Reputations:
    723
    _________________________
    #1452 VY_CMa, 23 Oct 2012
    Last edited: 23 Oct 2012
  13. [SMD]

    [SMD] Member

    Joined:
    17 Nov 2010
    Messages:
    32
    Likes Received:
    5
    Reputations:
    0
    500 ошибка в ответ

    и я удалил куки с сообщения, мб из-за этого?
     
    #1453 [SMD], 24 Oct 2012
    Last edited: 24 Oct 2012
  14. Chrome~

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

    Joined:
    13 Dec 2008
    Messages:
    939
    Likes Received:
    162
    Reputations:
    27
    Да и не надо заниматься разделением вручную. В приведенном выше коде немного низкоуровневый подход и это, считаю, не совсем правильно. На более высоком уровне об этом заботиться не нужно.
    Нет, куки не не влияют на значение Content-Length.
     
  15. [SMD]

    [SMD] Member

    Joined:
    17 Nov 2010
    Messages:
    32
    Likes Received:
    5
    Reputations:
    0
    в примере удачного запроса тоже отличаются Content-Length

    В реале 1249, а написано что 1251.

    Покажите пример, где используется не низкоуровневый подход.
    Я юзал вот такое
    Code:
    public class PostData5
            {
                private string s_method = String.Empty;
    
                public string Method { get { return this.s_method; } }
                private string s_action = String.Empty;
    
                public string Action { get { return this.s_action; } }
                public string Param { get { return this.s_param; } }
    
                private string s_param = String.Empty;
                public PostData5(string s_PostString)
                {
                    if (s_PostString.IndexOf("=") != -1)
                    {
                        this.s_method = s_PostString.Substring(0, s_PostString.IndexOf("="));
                        this.s_action = s_PostString.Substring(s_PostString.IndexOf("=") + 1);
                        if (this.s_action.IndexOf("!") != -1)
                        {
                            this.s_action = s_action.Substring(0, this.s_action.IndexOf("!")); this.s_param = s_PostString.Substring(s_PostString.IndexOf("!") + 1);
                        }
    
                    }
    
                }
                public static string MultiFormData(string Key, string Value, string Boundary)
                {
                    lock (typeof(PostData5))
                    {
                        string output = "--" + Boundary + "\r\n"; output += "Content-Disposition: form-data; name=\"" + Key + "\"\r\n\r\n";
                        output += Value + "\r\n";
                        return output;
                    }
                }
                public static string MultiFormDataFile(string Key, string Value, string FileName, string FileType, string Boundary)
                {
                    lock (typeof(PostData5))
                    {
                        string output = "--" + Boundary + "\r\n"; output += "Content-Disposition: form-data; name=\"" + Key + "\"; filename=\"" + FileName + "\"\r\n"; output += "Content-Type: " + FileType + " \r\n\r\n";
                        output += Value + "\r\n";
                        return output;
                    }
                }
            }
    но эффект был тот же, поэтому и начал все вручную писать..
     
    #1455 [SMD], 24 Oct 2012
    Last edited: 24 Oct 2012
  16. Chrome~

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

    Joined:
    13 Dec 2008
    Messages:
    939
    Likes Received:
    162
    Reputations:
    27
    Нет, правильно. В самом конце запроса браузер отправляет дополнительные 2 байта \r\n (посмотреть можно в сниффере). Также правильнее отправлять не просто перевод на новую строчку \n, как в твоем запросе, а строчку \r\n.

    Классы для работы с multipart/form-data можешь найти на:
    https://github.com/
    Или можешь посмотреть еще эту тему:
    http://stackoverflow.com/questions/219827/multipart-forms-from-c-sharp-client

    Также посмотри на эту библиотеку:
    http://habrahabr.ru/post/146475/
     
    #1456 Chrome~, 24 Oct 2012
    Last edited: 24 Oct 2012
    1 person likes this.
  17. Alekzzzander

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

    Joined:
    5 Sep 2007
    Messages:
    278
    Likes Received:
    36
    Reputations:
    0
    вопрос по c#:
    есть таблица dataGridView1 в которую выводятся данные из БД, о так же требуется что бы была возможность добавления записей напрямую из dataGridView1 и редактирование их там же, на счет добавления все происходит нормально, а вот с редактированием возникли вопросы, как и почему
    заполняю таблицу сед. образом:
    Code:
                string sql = "select fam as 'Фамилия', name as 'Имя', otch as 'Отчество', doljn as 'Должность', stavka as 'Ставка', sovmest as 'Совместитель', prinyat as 'Принят', uvolen as 'Уволен' from tabel.dbo.workers";
                Class1.con.Open();
                SqlCommand sqlCommand = new SqlCommand(sql, Class1.con);
                Class1.dataAdapter = new SqlDataAdapter(sqlCommand);
                SqlCommandBuilder commandBuilder = new SqlCommandBuilder(Class1.dataAdapter);
                dataTable.Clear();
                Class1.dataAdapter.Fill(dataTable);
                dataGridView1.DataSource = dataTable;
                Class1.con.Close();
    
    Обновляю по нажатию кнопки так:
    Code:
    Class1.dataAdapter.Update(dataTable);
    
    После редактирования уже существующих записей вылетает такая ошибка:
    Динамическое создание SQL для UpdateCommand не поддерживается для SelectCommand, не возвращающей никаких сведений о столбце ключей.

    как исправить??
     
  18. Белый Ворон

    Joined:
    7 Oct 2012
    Messages:
    46
    Likes Received:
    3
    Reputations:
    0
    в таблице должен быть первичный ключ, и этот первичный ключ должен фигурировать в твоем select'е
     
    1 person likes this.
  19. Alekzzzander

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

    Joined:
    5 Sep 2007
    Messages:
    278
    Likes Received:
    36
    Reputations:
    0
    добавил еще 1 таблицу, которая переименовывает должность из ID в имя и стала появляться ошибка:
    Динамическое создание SQL для нескольких базовых таблиц не поддерживается.
    ___
    при добавлении или изменении данных, как тут быть?
     
  20. Белый Ворон

    Joined:
    7 Oct 2012
    Messages:
    46
    Likes Received:
    3
    Reputations:
    0
    "Покажите мне код, болтовня ничего не стоит" (с)
     
Loading...