コード例 #1
0
        /// <summary>
        /// метод развертывания баззы данных
        /// </summary>
        void ConectToDB(string buld)
        {
            // "Server=(localdb)\\MSSQLLocalDB;Database=AdressForLabWork;Trusted_Connection=true";
            this.conectionstr = buld;
            DbContextOptionsBuilder <AdressContext> optionsBuilder = new DbContextOptionsBuilder <AdressContext>();

            optionsBuilder.UseSqlServer(this.conectionstr);

            var options = optionsBuilder.Options;

            using (AdressContext context = new AdressContext(options))
            {
                StreetsAdres streetsAdres = context.streetsAdreses.FirstOrDefault();
                if (streetsAdres != null)
                {
                    Console.WriteLine($"Base sucesful create  {streetsAdres.IndexStreet}  {streetsAdres.Sreet}");
                }
            }
        }
コード例 #2
0
        void MyAcceptCallbakFunction(IAsyncResult ia)
        {
            //получаем ссылку на слушающий сокет
            Socket socket = (Socket)ia.AsyncState;
            //получаем сокет для обмена данными с клиентом
            Socket ns = socket.EndAccept(ia);

            //выводим в консоль информацию о подключении
            Console.WriteLine(ns.RemoteEndPoint.ToString());

            // получаем ответ
            byte[]        data    = new byte[256]; // буфер для ответа
            StringBuilder builder = new StringBuilder();
            int           bytes   = 0;             // количество полученных байт


            ///Получаем сообщение от клиента
            do
            {
                bytes = ns.Receive(data, data.Length, 0);


                builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
            }while (socket.Available > 0);
            Console.WriteLine("ответ от клинета: " + builder.ToString());

            //разворачиваем базу данных если прилетела строка подключения
            if (builder.ToString().Contains("Server"))
            {
                ConectToDB(builder.ToString());
                DbContextOptionsBuilder <AdressContext> optionsBuilder = new DbContextOptionsBuilder <AdressContext>();
                optionsBuilder.UseSqlServer(this.conectionstr);
                var options = optionsBuilder.Options;
                using (AdressContext db = new AdressContext(options))
                {
                    var streets = db.streetsAdreses;

                    ////тест отправки сериализованнного обьекта в сервер
                    ////---------------------------------------------------------------------------
                    string json = System.Text.Json.JsonSerializer.Serialize(streets);
                    ////сериализуем и отправлем список улиц и индексов
                    byte[] serialalData = Encoding.Unicode.GetBytes(json);



                    //BinaryFormatter formatter = new BinaryFormatter();

                    //MemoryStream mem_stream = new MemoryStream();
                    //formatter.Serialize(mem_stream, streets);

                    //ns.BeginSend(mem_stream.GetBuffer(), 0, mem_stream.GetBuffer().Length, SocketFlags.None, new AsyncCallback(MySendCallbackFunction), ns);


                    ns.BeginSend(serialalData, 0, serialalData.Length, SocketFlags.None, new AsyncCallback(MySendCallbackFunction), ns);
                }
            }
            //иначе обращаемся к индексам
            else
            {
                Console.WriteLine("Upssssssssss");
            }
            //отправляем клиенту текущщее время асинхронно, по завершении //операции отправки
            //будет вызван метод MySendCallbackFunction
            //byte[] sendBufer = System.Text.Encoding.Unicode.GetBytes(DateTime.Now.ToString());
            //ns.BeginSend(sendBufer, 0, sendBufer.Length, SocketFlags.None, new
            //AsyncCallback(MySendCallbackFunction), ns);
            ////возобновляем асинхронный Accept
            socket.BeginAccept(new AsyncCallback(MyAcceptCallbakFunction), socket);
            conectionstr = builder.ToString();
        }