انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ارتباط با سرور(در برنامه نویسی اندروید)

ارتباط با سرور(در برنامه نویسی اندروید)

#1
باسلام به آدمین و دوستان فعال که کمکشون بدون دریغ انجام میدن.
بنده با مجموع تصویری آموزشی نحوه ارتباط با دیتابیس سرور و ارسال کردن و دریافت مقادیر یاد گرفتم.اما به نظر خودم روشی که در این پکیج آموزشی است خیلی راه وقت گیر است.احساس میکنم روش سریعتری باشه.
فرض کنید من یک دیتابیس دارم که دو فیلد به نام title و body داره.من میخوام برای بروز رسانی بیاد تمامی سطرهایی که مثلا از یه عددی هست رو بگیر و به سمت گوشی بفرسته.برای اینکار
درسمت php من کدهایی نوشتم که قسمتی از آن :

کد پی‌اچ‌پی:
$sqlQ="select * from T1 where ID>='$ id' ";
$result=mysql_Query($sqlQ);

while(
$row=mysql_fetch_assoc($result)){

print 
$row[0].'|';
print 
$row[1].'|';


درواقع من میام نتیجه کوئری که رو در یک حلقه میندازم و فیلدها رو با کارکتر | جدا میکنم و پرینت میکنم.

درسمت اندروید هم

کد پی‌اچ‌پی:
BufferedReader reader=new BufferedReader(new InputStreamReader(connect.getInputStream()));
            
StringBuilder sb=new StringBuilder();
            
            
String line=null;
            
            while((
line=reader.readLine()) !=null){
                
                
                
int f=0;
                
int c=0;
                
                for(
int i=0;i<line.length();i++){
                    if(
line.charAt(i)=='|'){
                        
String temp=line.substring(fi);
                        if(
c==0){
                            
                            
tid=temp;
                        }
                        if(
c==1){
                            
                            
tuser=temp;
                        }
                        if(
c==2){
                            
                            
                            
tmatn=temp.replace("^""\n");
                            
                            
                        }
                    
                    
f=i+1;
                    
c+=1;
                    }    
                }
                
                
index.count2++;
                
db.insert(tidtusertmatn); 

نمیخوام وارد جزئیات بشید .فقط بحث اینه که کد بالا میاد یک BufferReader تعریف میکنه. بعد میاد یه حلقه میزنه میگه تا زمانی که به انتهای نرسید خط به خط میگه و داخل متغیر line میریزه.
بعد روی این خط میاد یک حلقه دیگه میزنه و کارکتر به کارکتر میخونه تا برسه به کارکتر |  و فیلدها رو جدا میکنه.و داخل دیتابیس insert میکنه.
برنامه به درستی کار میکنه.ولی مشکل اینه اگر ما مثلا 30 مطلب و هرکدوم از آنها شامل چند 10 خط باشه .خب عملا تکرار حلقه ها خیلی زیاد میشه.
میخواستم بدونم اینکار منطقیه؟ آیا روش کوتاه تری هست؟
این روش مشکلی ندارد؟
آدمین جان چون میدونم شما روی دیتابیس تسلط زیاد دارید خوشحال میشم جواب بدید
یا بقیه دوستان اگر میدونند کمک کنند.مرسی
پاسخ

ارتباط با سرور(در برنامه نویسی اندروید)

#2
سلام.
در مورد مقایسه آن با روش های دیگر (از نظر میزان زمان اجرا) نمی توانم نظر بدهم (من از روش شما تاکنون استفاده نکرده ام بلکه بیشتر با json کار می کنم)، اما نکاتی را که معمولا در این موارد خود بنده رعایت می کنم، در اینجا می نویسم (فقط برای مورد شما نیست و به طور کلی برای سایر کاربران تذکر می دهم) :

1- برای انتقال اطلاعات متنی پیچیده (یعنی مقدار تعداد زیادی متغیر را می خواهیم از طریق متن دریافت کنیم)، از ساختارهای استانداردی مثل json استفاده کنید (کلید شماره 2651). اینگونه می توانید با کلاس های (Class) مرتبط با پردازش متن با ساختار json ، مقدار متغیرها را در آرایه ها (Array) یا لیست آرایه ای (ArrayList) ذخیره کنید (بعد هم این مقادیر را در database برنامه اندروید ذخیره می کنید). در غیر این صورت، باید کدهای زیادی برای استخراج مقدار متغیرها از متن دریافت شده بنویسیم که منطقی نیست (البته این مورد را به صورت کلی گفتم و برای مورد شما، نمی توانم بگویم کدام روش سریعتر است).
این بخش مربوط به دریافت متن هم در کلاس های json parser انجام می شود (که متن از خروجی صفحه دریافت شده و بعد یک JSONObject به ما داده می شود که بعد اطلاعات را به صورت آرایه از آن استخراج می کنیم).

2- اگر برای انتقال مقدار زیادی اطلاعات به صورت همزمان است، تعداد زیادی درخواست به یک صفحه نفرستید، بلکه تنها یک درخواست بفرستید که خروجی صفحه، شامل تمامی آن مقادیر به صورت متن به شکل json باشد.

3- در سمت سرور، انتخاب ردیف ها (rows) حتما در خود query باشد، نه اینکه همه ردیف ها با query انتخاب شود و بعد در یک حلقه for ، با شرط هایی ردیف های مورد نظر انتخاب شوند (زیرا همین حلقه for زمان زیادی را تلف می کند، در صورتی که انتخاب ردیف تنها باید در query باشد).

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط داش بهروز ، sohrabjam

ارتباط با سرور(در برنامه نویسی اندروید)

#3
به هیچ عنوان این روش توصیه نمیشه .وشما درست حدس زدید.اینکه بیاد خط به خط بگیرید و روی هر خط هم یک حلقه دیگه بزنید خب عملا یه وقت زمان بری هست.مثلا فرض کنید شما 1000 رکورد داشته باشید که هرکدام 40 خط داشته باشه .که میشه 40000 خط حدودا.بعد شما روی هرکدوم از این 40000 خط یک حلقه دیگه برای پیدا کردن کارکتر بزنید .خب این روش به نظر نرمال نمیاد.
ایراد بعدی که این روش داره ممکنه کارکتری که برای جدا سازی انتخاب کردید در داخل متن باشه.اگر یک درصد احتمال بدید این کارکتر| بنابر دلایلی وارد متن بشه.تمامی رکوردهای شما رو بهم میریزه.
بهتره بعد از کوئری زدن روی دیتابیس اون به فرمت جیسون دربیارید و به صورت آرایه از جیسون پاس بدید.همون طور که آدمین گفت

 
پاسخ
 سپاس شده توسط admin

ارتباط با سرور(در برنامه نویسی اندروید)

#4
سلام اگر بر نامه نویسی سوکتی انجام بدین سرعت بیشتری دارین و به نظر من بهتر است ار json هم استفاده کنید
پاسخ
 سپاس شده توسط admin

ارتباط با سرور(در برنامه نویسی اندروید)

#5
(۱۳۹۴/۰۶/۲۹, ۰۱:۲۹ ب.ظ)'rayej.ir' نوشته: سلام اگر بر نامه نویسی سوکتی انجام بدین سرعت بیشتری دارین و به نظر من بهتر است ار json هم استفاده کنید
 

منابع زیادی برای یاد گیری برنامه نویسی سوکت در اندروید وجود نداره ممکنه یک پروژه یا راهنمایی کنید که چطوری میشه ی متن رو به صورت سوکت به سرور ارسال کرد و جواب را دریافت کرد؟
پاسخ

ارتباط با سرور(در برنامه نویسی اندروید)

#6
 


فایل‌های پیوست

دانلود Sockets.rar

نام فایل Sockets.rar
نوع فایل .rar
دفعات دانلود 292
اندازه 59.42 KB
ارسال کننده فایل rayej.ir
پاسخ
 سپاس شده توسط داش بهروز ، admin ، بنیامین خلیفه

ارتباط با سرور(در برنامه نویسی اندروید)

#7
با سلام
دوستان بنده تازگی اندرود رو شروع کردم و به شدت میخام جیسون رو یاد بگیرم
بنده هم طبق راهی که بالا گفته شده برنامه نوشتم اما الان میخام با جیسون کار کنم اما هرچی میگردم نمیتونم اموزشی پیدا کنم(یوتوب و گوگل)
از طرفی نمیتونم با جیسون کار کنم و php بلد نیستم
اگه امکانش هست درمورد json در وردپرس توضیح بدید و اگه میشه اموزشی قرار بدید و همینطور کدوم پلاگین وردپرس برای استفاده از جیسون نیازه
ممنون از همگی
پاسخ

ارتباط با سرور(در برنامه نویسی اندروید)

#8
سلام دوست عزیز پیشنهاد میکنم لینک زیر رو ببینید،مشکلتون رو حل میکنه
http://openandroid.ir/2015/11/%D8%A2%D9%...%88%D8%B1/
 
پاسخ

ارتباط با سرور(در برنامه نویسی اندروید)

#9
تضمین میکنید به دردم بخوره؟
هزینش اصلا برام مهم نیست فقط میخام اموزش کار و ارسال مقادیر با جیسون و دریافتش توی اندروید رو داشته باشه
فیلم اموزشی زیاد گرفتم ولی چیزی که میخاستم نبود
توی توضیحات این فیلمم به نظر اموزش کاملی از جیسون نیست
پاسخ

ارتباط با سرور(در برنامه نویسی اندروید)

#10
(۱۳۹۴/۰۸/۳۰, ۱۲:۵۱ ب.ظ)'Michael.0858' نوشته: تضمین میکنید به دردم بخوره؟
هزینش اصلا برام مهم نیست فقط میخام اموزش کار و ارسال مقادیر با جیسون و دریافتش توی اندروید رو داشته باشه
فیلم اموزشی زیاد گرفتم ولی چیزی که میخاستم نبود
توی توضیحات این فیلمم به نظر اموزش کاملی از جیسون نیست

 

دقیقا چیزی که شما میخواید هستش،شک نکنید من خودم با این آموزش یاد گرفتم

 ویرایش توسط admin :
شما باید تذکر بدهید که صاحب سایت مورد نظر هستید. این نکته برای کاربرانی که اطلاعی ندارند، مهم می باشد. 
پاسخ

ارتباط با سرور(در برنامه نویسی اندروید)

#11
(۱۳۹۴/۰۸/۲۹, ۰۵:۳۸ ب.ظ)'davoodg' نوشته: سلام دوست عزیز پیشنهاد میکنم لینک زیر رو ببینید،مشکلتون رو حل میکنه
http://openandroid.ir/2015/11/%D8%A2%D9%...%88%D8%B1/
 

 

سلام.
اگر لینکی ذکر می شود، باید حتما تذکر بدهید که صاحب سایت مورد نظر خودتان هستید.
به هر حال بنده به عنوان مدیر سایت، مسئول شفاف بودن این مسائل هستم و به اجبار، اینگونه ارسال ها حذف خواهند شد. محدود ارسال هایی هم که حذف نمی شوند برای این است که نشان دهیم مشکلی با تبلیغات در انجمن نداریم، ولی به شرطی که موضوعی جداگانه برای آن نوشته شده و توضیحات در آن ذکر شوند و جدا از پرسش و پاسخ های انجمن باشند.

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

ارتباط با سرور(در برنامه نویسی اندروید)

#12
چشم آقای مدیر
پاسخ
 سپاس شده توسط شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان