PDA

View Full Version : socket در php



intel_amd
یک شنبه 09 آذر 1393, 22:59 عصر
با توجه به تحقیقاتی که در مورد ارتباط socket در php داشتم به مثال زیر رسیدم


<?php
error_reporting(E_ALL);


/* Allow the script to hang around waiting for connections. */
set_time_limit(0);


/* Turn on implicit output flushing so we see what we're getting
* as it comes in. */
ob_implicit_flush();


$address = '192.168.1.53';
$port = 10000;


if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
}


if (socket_bind($sock, $address, $port) === false) {
echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}


if (socket_listen($sock, 5) === false) {
echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}


do {
if (($msgsock = socket_accept($sock)) === false) {
echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
break;
}
/* Send instructions. */
$msg = "\nWelcome to the PHP Test Server. \n" .
"To quit, type 'quit'. To shut down the server type 'shutdown'.\n";
socket_write($msgsock, $msg, strlen($msg));


do {
if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
echo "socket_read() failed: reason: " . socket_strerror(socket_last_error($msgsock)) . "\n";
break 2;
}
if (!$buf = trim($buf)) {
continue;
}
if ($buf == 'quit') {
break;
}
if ($buf == 'shutdown') {
socket_close($msgsock);
break 2;
}
$talkback = "PHP: You said '$buf'.\n";
socket_write($msgsock, $talkback, strlen($talkback));
echo "$buf\n";
} while (true);
socket_close($msgsock);
} while (true);


socket_close($sock);
?>


در آدرس زیر موجود می باشد
http://php.net/manual/en/sockets.examples.php

ارتباط http request پیش از این باهاش کار کردم و ارسال و دریافت باهاش انجام دادم و الانکه با socket می خواهم ارسال و دریافت داشته باشم یکم شیوه کار برام نا آشناست
دوستان لطف کنند یکم راجع به سناریوی کار و این کد توضیح بدن تا این نوع ارتباط بررسی کنیم

intel_amd
جمعه 14 آذر 1393, 20:25 عصر
کسی در این زمینه مطالعه نداره؟

ciph3r
جمعه 14 آذر 1393, 20:48 عصر
چیز زیاد بزرگی نیست که نشه فهمیدشما باید قبل از این تا حدودی مطالب TCP/IP یا لایه های OSI را مطالعه فرماییداین برنامه یک سوکت معمولی در لایه 7 میسازه که از نوع TCP می باشد و به آدرس و پورت مذکور می فرستد ،هر سوکت باید دارای محتویاتی باشد که این میسیج را داخلش قرار داده،بعد از این کار باید سیستم مبدا را بایند کنه به آیپی جهت انکه جواب سوکت از طرف مقصد آمد بدونه که به کجا فرستاده میشهدر آخر هم سوکت را بسته چون اگر بسته نشه برنامه دچار خطا میشهالان شما دقیق چی متوجه نمیشی که به انجا بپردازیم ؟

intel_amd
یک شنبه 16 آذر 1393, 15:28 عصر
نکته اولی که ابهام دارم اینه که از طریق http اول یک چیزی میفرستیم و بعد جواب برگشت شده را می خوانیم حالا از طریق سوکت هم وقتی یک چیزی میفرستیم چجوری میتوان آن چیز را در سمت مقابل دریافت کرد و خواند