View Full Version : حرفه ای: معادل دستورات کار با سوکت php
NinjaVirus
چهارشنبه 22 شهریور 1391, 00:19 صبح
سلام دوستان...من میخوام با دلفی یه برنامه ای بنویسم که بتونه مثل کد زیر با سوکت ها کار کنه...این کد با زبان php نوشته شده :
function subd($host,$port,$ownername,$passw,$request)
{
$sock = fsockopen($host,$port);
if(!$sock)
{
print('Socket error');
exit();
}
$authstr = "$ownername:$passw";
$pass = base64_encode($authstr);
$in = "GET $request\r\n";
$in .= "HTTP/1.0\r\n";
$in .= "Host:$host\r\n";
$in .= "Authorization: Basic $pass\r\n";
$in .= "\r\n";
fputs($sock, $in);
while (!feof($sock))
{
$result .= fgets ($sock,128);
}
fclose( $sock );
return $result;
}
ممنون میشم راهنمایی کنید..
در ضمن از کنترل های Indy هم استفاده کردم و در این مورد نتیجه نداد...
BORHAN TEC
چهارشنبه 22 شهریور 1391, 11:33 صبح
اینها رو بخونید:
http://barnamenevis.org/showthread.php?347238-%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D8%AF%DB%8C%D8%AA%D8%A7%DB%8C-%D9%86%D8%A7-%D9%85%D8%B4%D8%AE%D8%B5-%D8%A7%D8%B2-%D8%B4%D8%A8%DA%A9%D9%87&p=1550008&viewfull=1#post1550008
http://delphi.about.com/od/networking/l/aa112602a.htm
NinjaVirus
چهارشنبه 22 شهریور 1391, 12:50 عصر
اینها رو بخونید:
http://barnamenevis.org/showthread.php?347238-%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D8%AF%DB%8C%D8%AA%D8%A7%DB%8C-%D9%86%D8%A7-%D9%85%D8%B4%D8%AE%D8%B5-%D8%A7%D8%B2-%D8%B4%D8%A8%DA%A9%D9%87&p=1550008&viewfull=1#post1550008
http://delphi.about.com/od/networking/l/aa112602a.htm
ممنون داداش...اینا رو هم نگاه کرده بودم و اجرا کردم نمیدونم چرا هر روشی که تو اینترنت پیدا کردم روش امتحان کردم جواب نمیده(البته باید بیشتر بگردم)...
من تو یه جا مشکل دارم...تو زبان سی و php سوکت رو مثل فایل باز میکنن و عملیات روش انجام میدن واسه همینه با این کد ها کار انجام میشه اما تو دلفی باز کردن سوکت به این روش رو من پیدا نکردم...
در کل میخوام یه برنامه ای بنویسم که به یه آیپی و پورت مشخص شده یه درخواست بفرسته یا درخواست رو روش بنویسه(write)
تقریبا از بیشتر کنترل های Indy هم استفاده کردم وقتی Writeln میکنم یا خطا میده یا نتیجه ای نداره...post کردن هم نتیجه ای نداد...
باز هم ممنون از جوابتون...
اگه روش دیگه هم مدنظرتون بود ممنون میشم راهنمایی کنید...
BORHAN TEC
چهارشنبه 22 شهریور 1391, 14:40 عصر
سلام
فکر می کنم که شما زیاد با دلفی آشنایی نداشته باشید بنابراین من یک پروژه نمونه رو برای این که با نحوه کار آشنا شوید نوشتم.
این پروژه شامل دو برنامه Server و Client میشود. ابتدا باید برنامه سرور را اجرا کنید و پورت شماره 1234 به آن اختصاص پیدا می کند. سپس برنامه کلاینت را اجرا کنید و خواهید دید که به سرور کانکت می شود. سپس در برنامه کلاینت متنی را بنویسید و بر روی Send کلیک کنید و همانطور که خواهید دید برنامه سرور آن متن را دریافت کرده و آنرا برعکس می کند و به سمت کلاینت می فرستد و کلاینت هم آن را دریافت کرده و نمایش می دهد.
من این برنامه را با Delphi XE2 نوشته ام و اگر از نسخه های قدیمی تر مشکلی پیدا کردید فقط کافیست که نام یونیت ها را کمی تغییر دهید(اگر توی اینترنت سرچ کنید به راحتی این مسئله را می توانید حل کنید)
البته راه حل های زیادی در دلفی برای کار با سوکتها وجود داره ولی معمولاً از خود کامپوننت های همراه دلفی(TServerSocketو TClientSocket)استفاده می شود.
اگر باز هم مشکلی بود ما در خدمتیم...
NinjaVirus
چهارشنبه 22 شهریور 1391, 14:53 عصر
خیلی ممنون...از این کنترل هم واسه اینکار استفاده کردم در این مورد نتیجه نداد...یعنی اون کاری که بایستی انجام بده نداد...موندم چرا کار نمیکنه همه چیز که درسته...:متفکر:
در کل این اسکریپت با یوزر و پسورد و آیپی که بهش میدیم به سی پنل سایت(موربوط به اون یوزر) وصل میشه و یک درخواست که باعث ایجاد سابدامین میشه رو میفرسته....
که البته این کد کاملش نیست..اما اصل کاری همینه...متغیر $request همون درخواسته که ارسال میشه...من از کنترلهایی مثل TIdHTTP هم استفاده کردم،چه با دستور post و چه با write کردن به نتیجه نرسیدم...
باز هم ممنون...ببینم با مانیتور کردن بسته های ارسالی مربوط به این برنامه و مرورگر و مقایسه اونا به کجا میرسم...شاید بشه با دستکاری محتوای بسته ارسالی به نتیجه مورد نظر رسید...
BORHAN TEC
چهارشنبه 22 شهریور 1391, 14:58 عصر
راستش من php بلد نیستم ولی اگر باز هم به نتیجه نرسیدی ما در خدمتیم....
NinjaVirus
چهارشنبه 22 شهریور 1391, 15:11 عصر
خیلی ممنون دوست عزیز ببینم به کجا میرسم....
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.