關於php的socket,該如何解決

來源:互聯網
上載者:User
關於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)
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.