關於php的socket
最近在學php的socket,想通過一個功能的實現檢驗我對socket的理解:
1、client端發送資料到伺服器端
2、server端接收client發送過來的資料,並會送一個響應給client端
3、client端顯示server端發過來的響應資訊
以下是代碼
server.php:
// Set up our socket
$commonProtocol = getprotobyname("tcp");
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);
socket_bind($socket, 'localhost', 1234);
socket_listen($socket);
// Initialize the buffer
$buffer = "NO DATA";
while(true) {
// Accept any connections coming in on this socket
$connection = socket_accept($socket);
printf("Socket connected\r\n");
// Check to see if there is anything in the buffer
$buffer=socket_read($connection, 2048, PHP_NORMAL_READ);
echo "recived from client ".$buffer;
$ResponseToClient=$buffer." is handled by server!\n";
socket_write($connection, $ResponseToClient);
echo "response to client!\n ";
}
?>
client.php:
// Create the socket and connect
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$connection = socket_connect($socket,'localhost', 65500);
$i=0;
$s=0;
while(true)
{
echo "sending data".$i++."\n";
$SendDataToServer=socket_write($socket, "server".$s++);
$ResponseFromServer=socket_read($socket, 2048, PHP_NORMAL_READ);
echo "received".$ResponseFromServer."from server \n";
}
?>
問題是:client端只顯示sending data0
而server端只顯示Socket connected
其他什麼也不顯示,沒有達到我預想的client不斷髮送資料,server端不斷處理資料並返回給client的目的,請高手指教下,萬分感謝 socket PHP
分享到:
------解決方案--------------------
沒有需求幹嘛弄這個?
不過可以給你個早年寫的測試例
服務端
// Server
// 設定錯誤處理
error_reporting (E_ALL);
// 設定已耗用時間
set_time_limit (0);
// 起用緩衝
ob_implicit_flush ();
$ip = "127.0.0.1"; // IP地址
$port = 1000; // 連接埠號碼
$socket = socket_create (AF_INET, SOCK_STREAM, SOL_TCP); // 建立一個SOCKET
if ($socket)
echo "socket_create() successed!\n";
else
echo "socket_create() failed:".socket_strerror ($socket)."\n";
$bind = socket_bind ($socket, $ip, $port); // 綁定一個SOCKET
if ($bind)
echo "socket_bind() successed!\n";
else
echo "socket_bind() failed:".socket_strerror ($bind)."\n";
$listen = socket_listen ($socket); // 間聽SOCKET
if ($listen)