Server yaratish
"Server" ni amalga oshirish uchun biz SQL va PHP bilan ishlashga imkon beradigan har qanday xostingda ro'yxatdan o'tishimiz kerak.
Bo'sh SQL ma'lumotlar bazasini yarating, unda jadval yarating.
Suhbat jadvali.
Strukturasi quyidagicha:
author — xabar muallifi;
client — xabar oluvchi;
data — serverda xabarni qabul qilish vaqti va sanasi;
text — xabar.
Keyingi ikkita faylda ma'lumotlarni o'z ichiga olgan o'zgaruvchilarni o'zgartirish kerak
"serveringizni" ro'yxatdan o'tkazishda siz olgan ma'lumotlar bazasiga kirish.
$mysql_host = "localhost"; // sql сервер, mahalliy yoki tashqi bo'lishi mumkin. Masalan:
|
ер mysql5.000webhost.com
|
|
$mysql_user = "l29340eb_chat"; // foydalanuvchi
|
|
$mysql_password = "123456789"; // parol
|
|
$mysql_database = "l29340eb_chat"; // SQL serveridagi ma'lumotlar bazasining nomi
|
|
Chat.php fayli server tushunadigan so'rovlar tuzilishini amalga oshiradigan bizning api.
Api so'rovining tuzilishi:
Majburiy harakat atributi - tanlashga teng bo'lishi mumkin (server o'z ma'lumotlar bazasidagi yozuvlar ro'yxati bilan javob beradi), qo'shish (server o'z ma'lumotlar bazasiga yangi yozuv qo'shadi), o'chirish (server o'z ma'lumotlar bazasini tozalaydi) agar harakat = qo'shish bo'lsa, biz qo'shimcha parametrlarni berishimiz kerak bo'ladi: muallif (xabarni yozgan), mijoz (xabar kimga yuborilgan), matn (xabar) action = select qo'shimcha ma'lumotlar parametrini o'z ichiga olishi mumkin, bu holda server javobida ma'lumotlar bazasidagi barcha xabarlar mavjud emas, faqat yaratilish vaqti yuborilganidan kechroq bo'lganlar.
Misollar:
chat.php?action=delete – serverdagi barcha yozuvlarni o'chirib tashlaydi
chat.php?action=insert&author=Jon&client=Smith&text=Hello — serverga yangi yozuv qo'shadi: muallif Jon, oluvchi Smit, kontent Salom
chat.php?action=select&data=151351333 — vaqt o'tganidan keyin olingan barcha yozuvlarni uzoq formatda qaytaradi
ShowBD.php fayl — ma'lumotlar bazasi tarkibini brauzerda vizual ko'rsatish uchun ixtiyoriy skript.
Mijoz qismi
Endi Android ilovasining tuzilishi:
FoneService.java fonda ishlayapti, u alohida mavzuda serverga har 15 soniyada so'rov yuboradi. Agar server javobida yangi xabarlar bo'lsa, FoneService.java ularni mahalliy ma'lumotlar bazasiga yozadi va ChatActivity.java -ga ListView -ni xabarlar bilan yangilash zarurligi to'g'risida xabar yuboradi. ChatActivity.java (agar u hozirda ochiq bo'lsa) xabar oladi va ListView tarkibini mahalliy ma'lumotlar bazasidan yangilaydi..
ChatActivity.java -dan FoneService.java -ni chetlab o'tib, to'g'ridan -to'g'ri serverga yangi xabar yuboriladi. Bunday holda, bizning xabarimiz mahalliy ma'lumotlar bazasiga yozilmaydi! U erda u faqat server javobi shaklida qaytarilgandan keyin paydo bo'ladi. Men ushbu ilovani har qanday Internet -chat ishining muhim nuansi - xabarlarni vaqt bo'yicha majburiy guruhlash bilan bog'liq holda ishlatganman. Agar siz vaqt bo'yicha guruhlashni ishlatmasangiz, xabarlar ketma -ketligi buziladi. Mijoz dasturlarini millisekundlik aniqlik bilan jismonan sinxronlashtirish mumkin emasligini va hatto turli vaqt zonalarida ishlashini hisobga olsak, server vaqtidan foydalanish mantiqan to'g'ri bo'lardi. Bu biz qiladigan ish.
Yangi xabarni yaratishda biz serverga so'rov yuboramiz: xabar muallifining ismi, xabar oluvchining ismi, xabar matni. Bu yozuvni server javobi sifatida qabul qilib, biz yuborgan narsani olamiz + to'rtinchi parametr: server tomonidan xabar qabul qilingan vaqt..
MainActivity.java -da, aniqlik uchun, men mahalliy ma'lumotlar bazasidan xabarlarni o'chirish qobiliyatini qo'shdim - bu dasturni toza o'rnatishga teng (bu holda, FoneService serverga tanlanganlardan kelgan barcha xabarlarni qabul qilish uchun so'rov yuboradi. suhbat). Bundan tashqari, serverda joylashgan ma'lumotlar bazasidan barcha xabarlarni o'chirish uchun so'rov yuborish mumkin.
Labarotoriya ishlari uchun topshiriqlar.
1. Sizga {ai} (i = 1, 2,., N) butun sonlar va x butun sonlar qatori beriladi. Massiv komponentlarining qiymatlari kamaymaydigan tartibda tartiblangan. I massivining komponenti sonini hisoblash uchun dastur yozing (agar mavjud bo'lsa) ai 2. {Ai} (i = 1, 2,., N) butun sonlar majmuasi berilgan bo'lsa, butun son k (k> 0). Tsikl massiv komponentlarining qiymatlarini k komponentalari bo'yicha o'ngga siljitadi.
3. {Ai} (i = 1, 2,., N) butun sonlar qatori berilgan bo'lsa, k (k> 0) butun son. Tsikl massiv komponentlarining qiymatlarini k komponentlari bilan chapga siljitadi.
4. Sonlar qatorining [ai, bi] (1
Do'stlaringiz bilan baham: |