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

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

  1. Pirotexnik

    Pirotexnik Member

    Joined:
    13 Oct 2010
    Messages:
    376
    Likes Received:
    73
    Reputations:
    38
    Вопрос по WCF в С#.

    Нужно передать с клиента на сервер массив байт. Если передавать не большой массив - все работает, но если массив большой - сервер возвращает ошибку "Entity too large".

    Как исправить?

    Код:

    Клиент:
    Code:
    OpenFileDialog tmpFile = new OpenFileDialog();
    
                tmpFile.InitialDirectory = "c:\\";
                tmpFile.Filter = "Image files (*.JPG)|*.JPG|All files (*.*)|*.*";
                tmpFile.FilterIndex = 2;
                tmpFile.RestoreDirectory = true;
    
                if (tmpFile.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        FileStream fs = new FileStream(tmpFile.FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
                        byte[] mas = new byte[fs.Length];
                        fs.Read(mas, 0, (int)fs.Length);
                        fs.Close();
                        MessageBox.Show(Files("add", rsa, mas, tmpFile.SafeFileName));
    
                        
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Невозможно открыть файл. Сервер вернул ошибку: " + ex.Message);
                    }
                }
    Сервер:

    Code:
    public string Files(string mode, int uKey, byte[] byteMass, string fName)
            {
                if (mode == "add")
                {
                    using (connection)
                    {
                        //получаем айдишник по ключу
                        int uID = 0;
                        connection.Open();
                        SqlCommand command = new SqlCommand(@"SELECT uID FROM tSess WHERE uKey = " + uKey + "", connection);
                        uID = Convert.ToInt32(command.ExecuteScalar());
    
                        command = new SqlCommand(@"SELECT uName FROM tUsers WHERE uID = " + uID + "", connection);
                        string uName = command.ExecuteScalar().ToString();
    
                        string fPath=".\\users\\"+uName+"\\";
    
                        //записуем файл на винт
                        FileStream fs = new FileStream(fPath+fName, FileMode.Create, FileAccess.Write, FileShare.Write);
                        fs.Write(byteMass, 0, (int)byteMass.Length);
                        fs.Close();
    
                        //добавляем файл владельцу ключа, если таковой существует
                        if (uID != 0)
                        {
                            command = new SqlCommand(@"INSERT INTO tFiles (uID, fName, fPath) VALUES('" + uID + "', '" + fName + "', '" + fPath + "')", connection);
                            Console.WriteLine(command.CommandText.ToString());
                            command.ExecuteNonQuery();
                            connection.Close();
                            return "Added!";
                        }
                        else
                        {
                            connection.Close();
                            return "False :(";
                        }
                    }
                }
     
  2. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    А каким протоколом ты данные отправляешь, я что то не увидел в коде? Может я просмотрел?
    По поводу ошибки - размер пакета превышает максимально дозволенный.
    Как пример, можно посмотреть реализацию отправки изображения посредством протокола UPD у которого максимальный размер 65.535 Bytes, а размер картинки превышает размер пакета, то есть картинку передаёт несколькими пакетами.
    ТЫЦ
     
    1 person likes this.
  3. Pirotexnik

    Pirotexnik Member

    Joined:
    13 Oct 2010
    Messages:
    376
    Likes Received:
    73
    Reputations:
    38
    UDP не покатит, т.к. нужна 100% целостность данных.

    Кароче, прийдется резать картинку на несколько массивов?
    А как функцией принять несколько массивов?

    По ссылке не совсем то. Нужно передать их в цикле.
    Тоесть что-то в духе:

    int count = length/65000;
    byte[] mas = new byte[65000];
    for(int i = 0; i<count; i++)
    {
    mas = чему оно равно?;
    и как отправить?;
    }
     
  4. Pinkie

    Pinkie New Member

    Joined:
    1 Sep 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    -----------------
     
    #1484 Pinkie, 30 Nov 2012
    Last edited: 30 Nov 2012
  5. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    вопрос по джава.
    среда азработки eclipse
    скачал тут Base64
    как мне в главной проге использовать его?
     
  6. FunOfGun

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

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    72
    Reputations:
    124
    Code:
     using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                int n = int.Parse(Input("Enter N: ")), a = int.Parse(Input("Enter A: ")), d=int.Parse(Input("Enter D: "));
                int[] nums = new int[n];
                nums[0]=a;
                Console.Write(a.ToString()+" ");
                for (int i = 1; i < nums.Length; i++)
                {
                    nums[i] = nums[i - 1] + d;
                    Console.Write(nums[i].ToString() + " ");
                }
                Console.ReadLine();
            }
    
            static string Input(string prompt)
            {
                Console.Write(prompt);
                return Console.ReadLine();
            }
        }
    }
    
    Code:
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                int[] arr = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
                int k = 4, l = 9;
                int sum = 0;
                for (int i = k; i <= l; i++)
                    sum += arr[i];
    
                Console.WriteLine(sum.ToString());
                Console.ReadLine();
            }
        }
    }
    
    
     
  7. FROGRUS

    FROGRUS New Member

    Joined:
    12 Nov 2010
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    sql VS c#

    Создал sql-Запрос , а вижуалка при запуске пишет что неверен формат строки запроса! Вот фрагмент этого кода!
    Code:
    public bool DoNewBook(Guid ID,Guid UserID,string NameBook, DateTime DateStart )
     {
     string vall = String.Format("INSERT INTO UsersBooks"+"ID , UserID , NameBook , DateStart "+"VALUES({'0'},{'1'},{'2'},{'3'})",ID,UserID,NameBook,DateStart);
     bool flagres = false;
     using (SqlConnection connection = new SqlConnection(connect))
     { 
    SqlCommand comanda = new SqlCommand(vall, connection);
     try 
    { 
    connection.Open(); 
    if (comanda.ExecuteNonQuery() == 1)
     flagres = true; 
    } 
    catch { }
     }
    
    в чем проблема?
     
  8. FunOfGun

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

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    72
    Reputations:
    124
    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.ReadLine();
                var req = (HttpWebRequest)WebRequest.Create("http://google.com");
                var resp = (HttpWebResponse)req.GetResponse();
                Console.WriteLine(resp.Cookies.Count);//почему здесь 0? 
                Console.WriteLine(resp.Headers["Set-Cookie"]);//куча куков, шо за нах?
                Console.ReadLine();
            }
        }
    }
    
    
    Почему куки не попадают в cookies? Заранее спасибо.
     
  9. herfleisch

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

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    Code:
    INSERT INTO <название таблицы> ([<Имя столбца>, ... ]) VALUES (<Значение>,...)
     
  10. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    HttpWebRequest.CookieContainer:
     
    2 people like this.
  11. Hakdusha

    Hakdusha New Member

    Joined:
    20 Apr 2010
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            private CookieContainer cookie = new CookieContainer();
            static void Main(string[] args)
            {
                Console.ReadLine();
                var req = (HttpWebRequest)WebRequest.Create("http://google.com");
                req.CookieContainer = cookie;
                var resp = (HttpWebResponse)req.GetResponse();
                Console.WriteLine(resp.Cookies.Count);//почему здесь 0? 
                Console.WriteLine(resp.Headers["Set-Cookie"]);//куча куков, шо за нах?
                Console.ReadLine();
            }
        }
    }
    
    
    Как то так
     
    #1491 Hakdusha, 15 Dec 2012
    Last edited: 15 Dec 2012
    1 person likes this.
  12. JitMi$ha

    JitMi$ha New Member

    Joined:
    13 Dec 2012
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Не забудь еще почистить куки от инфы, которая для добавления куков.
     
  13. DeepBlue7

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

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

    Подскажите, как лучше реализовать метод который бы возвращал название базового типа обьекта ?

    Конечно, можно и так...

    Code:
    
     public static string _objectTypeName(object obj)
            {
                string szResult = string.Empty;
    
                TypeCode typeID = Type.GetTypeCode(obj.GetType());
    
                switch (typeID)
                {
                    case TypeCode.Boolean:
                        szResult = "Bool";
                        break;
                    case TypeCode.Byte:
                        szResult = "Byte";
                        break;
                    case TypeCode.Char:
                        szResult = "Char";
                        break;
                    case TypeCode.DateTime:
                        szResult = "DateTime";
                        break;
                    case TypeCode.DBNull:
                        szResult = "DBNull";
                        break;
                    case TypeCode.Decimal:
                        szResult = "Decimal";
                        break;
                    case TypeCode.Double:
                        szResult = "Double";
                        break;
                    case TypeCode.Empty:
                        szResult = "Empty";
                        break;
                    case TypeCode.Int16:
                        szResult = "Int16";
                        break;
                    case TypeCode.Int32:
                        szResult = "Int32";
                        break;
                    case TypeCode.Int64:
                        szResult = "Int64";
                        break;
                    case TypeCode.Object:
                        szResult = "Object";
                        break;
                    case TypeCode.SByte:
                        szResult = "SByte";
                        break;
                    case TypeCode.Single:
                        szResult = "Single";
                        break;
                    case TypeCode.String:
                        szResult = "String";
                        break;
                    case TypeCode.UInt16:
                        szResult = "UInt16";
                        break;
                    case TypeCode.UInt32:
                        szResult = "UInt32";
                        break;
                    case TypeCode.UInt64:
                        szResult = "UInt64";
                        break;
                    default:
                        szResult = "UNKNOWN TYPE";
                        break;
                }
                return szResult;
            }
    
    Может можно сразу получить название, а не пилить switch ? Заранее благодарю.
     
    #1493 DeepBlue7, 30 Dec 2012
    Last edited: 30 Dec 2012
  14. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
  15. DeepBlue7

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

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Спс, не додумался попробовать :).

    ---------------------------

    Code:
    public static string _objectTypeName(object obj)
            {
                Type objType = obj.GetType();
                return objType.Name;
            }
    
     
    #1495 DeepBlue7, 30 Dec 2012
    Last edited: 30 Dec 2012
  16. kaktuscrime

    kaktuscrime New Member

    Joined:
    22 May 2012
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте,
    у меня такая проблемка:
    имеется 24 Групбокса, рандомно должен выбратся один из них, некоторое время "посветить", и опять же другой бокс рондомно выбратся....

    Вопрос можно ли вообще Групбоксы рандомно выбрать, или это только для чисел?
     
  17. herfleisch

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

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    Создайте массив groupbox-ов, выберите рандомно число R от 0 до 23, и возьмите groupbox из массива по рандомному индексу R.
     
  18. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Размести их на каком-то контроле(Panel например), а затем выбирай случайный из Control.ControlCollection .
     
  19. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Есть программа (и исходники) которая расшифровывает распаковывает некоторые xml файлы а вот как сделать по ней обратный процесс чтобы также шифровала паковала я в C# ноль прошу подсказать алгоритм как она работает в идеале сделать шифровку по исходникам ниже

    исходники и примеры xml которые расшифровывает программа
     
  20. DJ4J

    DJ4J Member

    Joined:
    23 Aug 2009
    Messages:
    0
    Likes Received:
    53
    Reputations:
    1
    Только начал ковырять java и вот банальный пример не хочет работать.
    PHP:
    class tree{
        
    int age;
        
    String name;
        
    int length;
        public static 
    void main(String args[])
        {
            
    tree AppleTree;
            
    AppleTree = new tree();
            
    AppleTree.age 12;
            
    AppleTree.name 'Яблоня';
            
        }
    }
    Ругается на строчку
    AppleTree.name = 'Яблоня';
    invalid character constant
    А у автора все работает.В чем дело?
     
Loading...
Similar Threads - Java начинающим задаем
  1. b3
    Replies:
    4
    Views:
    3,324