PDA

View Full Version : سوال: آموزش توابع FSOCKOPEN,fputs,feof,fgets



paksar
چهارشنبه 19 تیر 1387, 00:46 صبح
آموزش توابع FSOCKOPEN,fputs,feof,fgets

لطفا اگه کسی میدونه همینجا بگه

مرسی

paksar
چهارشنبه 19 تیر 1387, 10:17 صبح
آموزش توابع FSOCKOPEN,fputs,feof,fgets

لطفا اگه کسی میدونه همینجا بگه

مرسی

یکی جواب بده

Bahram0110
چهارشنبه 19 تیر 1387, 11:09 صبح
شما چرا Manual پی اچ پی رو دانلود نمی کنید؟

مثلا این برای Fsockopen :


fsockopen

(PHP 3, PHP 4, PHP 5)
fsockopen -- Open Internet or Unix domain socket connection
Description

resource fsockopen ( string hostname [, int port [, int &errno [, string &errstr [, float timeout]]]] )

Initiates a socket connection to the resource specified by hostname.
PHP supports targets in the Internet and Unix domains as described in Appendix Q (http://barnamenevis.org/forum/transports.html). A list of supported transports can also be retrieved using stream_get_transports() (http://barnamenevis.org/forum/function.stream-get-transports.html).
The socket will by default be opened in blocking mode. You can switch it to non-blocking mode by using stream_set_blocking() (http://barnamenevis.org/forum/function.stream-set-blocking.html).

Parameters


hostname If you have compiled in OpenSSL support, you may prefix the hostname with either ssl:// or tls:// to use an SSL or TLS client connection over TCP/IP to connect to the remote host.
port The port number.
errno If provided, holds the system level error number that occurred in the system-level connect() call.
If the value returned in errno is 0 and the function returned FALSE, it is an indication that the error occurred before the connect() call. This is most likely due to a problem initializing the socket.
errstr The error message as a string.
timeout The connection timeout, in seconds.

Note: If you need to set a timeout for reading/writing data over the socket, use stream_set_timeout() (http://barnamenevis.org/forum/function.stream-set-timeout.html), as the timeout parameter to fsockopen() only applies while connecting the socket.



Return Values

fsockopen() returns a file pointer which may be used together with the other file functions (such as fgets() (http://barnamenevis.org/forum/function.fgets.html), fgetss() (http://barnamenevis.org/forum/function.fgetss.html), fwrite() (http://barnamenevis.org/forum/function.fwrite.html), fclose() (http://barnamenevis.org/forum/function.fclose.html), and feof() (http://barnamenevis.org/forum/function.feof.html)). If the call fails, it will return FALSE

ChangeLog


Version Description 4.3.0 Added support for the timeout parameter on win32. 4.3.0 SSL and TLS over TCP/IP support was added. 4.0.0 UDP support was added. 3.0.9 The timeout parameter was added.

Examples

Example 1. fsockopen() Example
<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";

fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>

Example 2. Using UDP connection
The example below shows how to retrieve the day and time from the UDP service "daytime" (port 13) in your own machine.
<?php
$fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr);
if (!$fp) {
echo "ERROR: $errno - $errstr<br />\n";
} else {
fwrite($fp, "\n");
echo fread($fp, 26);
fclose($fp);
}
?>


Notes


Note: Depending on the environment, the Unix domain or the optional connect timeout may not be available.

Warning UDP sockets will sometimes appear to have opened without an error, even if the remote host is unreachable. The error will only become apparent when you read or write data to/from the socket. The reason for this is because UDP is a "connectionless" protocol, which means that the operating system does not try to establish a link for the socket until it actually needs to send or receive data.


Note: When specifying a numerical IPv6 address (e.g. fe80::1) you must enclose the IP in square brackets. For example, tcp://[fe80::1]:80.

paksar
چهارشنبه 19 تیر 1387, 21:58 عصر
شما چرا Manual پی اچ پی رو دانلود نمی کنید؟

مثلا این برای Fsockopen :


[/code]


سلام ممنون از راهنماییتون راستی Manual رو دارم اما با زبان فارسی بیشتر حال میکنم
زبانم زیاد خوب نیست.
حالا اگه کسی بلده لطف کنه فارسیشو اینجا بنویسه !!! میخوام اسکریپت whois بسازم !!!

majoran
چهارشنبه 19 تیر 1387, 23:46 عصر
اگه یه لطفی کنید و یه توضیح هم برای ما بدید که اینها چه کار می کنند متشکر می شم

yaqubian
پنج شنبه 20 تیر 1387, 00:33 صبح
دوست عزیز این تابع کارش تشخیص یه سوکت کانکشنه که البته کاربردش واسه دمین اینترنت و یونیکس فرق می کنه. چون اینترنت خودش شامل TCP و UDP و یونیکس هم باید از اسم هاست بعنوان مسیر سوکت استفاده کنیم. در ضمن تو استفاده از unix باید یادمون باشه که پارامتر PORT رو باید برابر صفر قرار بدیم.
در ضمن خروجی این تابع هم یه file pointer و بقیه توابع هم مربوط به شکلهای مختلف استفاده از این تابع می شن.
موفق باشید

amirhosein
پنج شنبه 20 تیر 1387, 10:09 صبح
منوال پی اچ پی بهترین راهنمایی هست که تا حالا توی دنیای صفر و یک باهاش کار کردم. انگلیسی اش خیلی روونه.

yaqubian
پنج شنبه 20 تیر 1387, 22:16 عصر
دوست عزیز
می تونی بگی این توابع رو واسه چی می خوای؟
شاید بشه راه حل های بهتری رو پیشنهاد کرد.
موفق باشید

paksar
جمعه 21 تیر 1387, 22:55 عصر
دوست عزیز
می تونی بگی این توابع رو واسه چی می خوای؟
شاید بشه راه حل های بهتری رو پیشنهاد کرد.
موفق باشید

سلام
ببینید من میخوام یه اسکریپت whois بسازم خوب اسکریپتهایی رو که دیده بودم به این شکل بود که اول نام دامین رو چک مکردن بعد سرورهای whois دومین مثلا com بعدا کد اصلی برنامه
به این صورت بود که ابتدا درخواست بازکردن سرور توسط تابع fsockopen با پارامترهای 1-نام سرور whois و 2-پورت و 3-و ارورها در 2 پارامتر. بعد خوب این خودش در متغیری ذخیره میشد حالا با استفاده از تابه fputs نام دامین بر روی سرور نوشته میشد و بعد در یک حلقه تکرار در صورتیکه(شرط حلقه) تابع feof مقدار true رو برگرداند حلقه می ایستاد حالا بدنه حلقه با استفاده از تابع fgets یا fread با پارامتر دوم 128 که مقدار Lenght (بایت) اکو میشد حالا من میخواستم بدونم نقش تابع fsockopen در این اسکریپت چیکاره است؟
لطف کنید کامل شرح بدین البته اگه زحمتی نیست ها

paksar
شنبه 22 تیر 1387, 11:40 صبح
دوست عزیز
می تونی بگی این توابع رو واسه چی می خوای؟
شاید بشه راه حل های بهتری رو پیشنهاد کرد.
موفق باشید

سلام آقا سعید میشه نظرتون درباره این اسکریپت بدین آیا برای whois بدرد میخوره؟

<?php
$domain = "yahoo.ir";
if (trim($domain) <> "") {
$domain = trim($domain);
$fp = fsockopen("whois.nic.ir", 43, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)";
} else {
fputs($fp, "$domain\r\n");
print "<pre>\r\n";
while (!feof($fp)) {
echo fread($fp,128);
}
print "</pre>";
fclose ($fp);
}
}
?>
تستش کردم جواب نمیداد.

Bahram0110
شنبه 22 تیر 1387, 20:59 عصر
سلام


$data = "";
$server = 'whois.nic.ir';
$fp = @fsockopen($server, 43,$errno, $errstr, 5);
if( $fp ){
@fputs($fp, $domain."\r\n");
@socket_set_timeout($fp, 30);
while( !@feof($fp) ){
$data .= @fread($fp, 4096);
}
@fclose($fp);
echo $data;
}else{
echo "<p style=\"text-align: center\"><font color=red>! قادر به ارتباط با سرور نیستم<br />لطفا از ارتباط خود با اينترنت مطمئن شويد</font></p>";
}

yaqubian
شنبه 22 تیر 1387, 22:49 عصر
دوست عزیز
مشکل رو که آقا بهرام حل کردن
اینم یه نمونست
موفق باشید

paksar
دوشنبه 24 تیر 1387, 22:08 عصر
دوست عزیز
مشکل رو که آقا بهرام حل کردن
اینم یه نمونست
موفق باشید

سلام واقعا نمیدونم چطوری از برو بچ های خوب فروم تشکر کنم.
آقا من هر دوشو امتحان کردن جواب نداد اون اولی آقا بهرام که میگفت به اینترنت وصل نیستید و مال سعید آقا هم هر دومینی رو که وارد کنی پیغام mohsenfakhraee.com does not appear to be registered چاپ میکنه.
راستی من اسکریپتامو رو سایت gigfa.com میزارم.
اگه هنوز راه داره مشکل منو حل کنید.
مرسی

yaqubian
سه شنبه 25 تیر 1387, 00:02 صبح
paksar عزیز
اینو یه نیگاه بنداز

paksar
چهارشنبه 26 تیر 1387, 14:32 عصر
paksar عزیز
اینو یه نیگاه بنداز

سلام به دوستان عزیزم واقعا نمیدونم با چه زبونی از شما تشکر کنم واقعا ممنون
آقا تو این مدت مشکل از سرور بوده gigfa.com این هاست رایگان هم بدرد هیچی نمیخوره ها!!!
ولی رو یه هاست دیگه امتحان کردم جواب داد اون اسکریپت خودم هم درست بود حالا من این سوالو دارم اشکال از کجا بوود مگه سرور چه مشکلی داشت شاید هم تنظیمات php
لطف کنید جواب منو بدید که دارم :عصبانی:جوش میارم.

ممنون از همه

yaqubian
چهارشنبه 26 تیر 1387, 23:50 عصر
paksar عزیز
شاید سرور update نشده بوده. من این مشکل رو داشتم مخصوصا زمانی که سرور رو از ارتقا می دن. منظورم از php 4 به 5.
موفق باشید