/// <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}"); } } }
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(); }