簡體   English   中英

套接字編程跨平台(PHP和Javascript)

[英]Socket Programming Cross Platform (PHP & Javascript)

我已經使用PHP創建了一個套接字服務器,代碼是這樣的

的PHP

function listen()
{
// set some variables
    $host = "127.0.0.1";
    $port = 25003;
// don't timeout!
    set_time_limit(0);
// create socket
    $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
// bind socket to port
    $result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
// start listening for connections
    $result = socket_listen($socket, 3) or die("Could not set up socket listener\n");

// accept incoming connections
// spawn another socket to handle communication
    $spawn = socket_accept($socket) or die("Could not accept incoming connection\n");
// read client input
    $input = socket_read($spawn, 1024) or die("Could not read input\n");
// clean up input string
    $input = trim($input);
    echo "Client Message : " . $input."\n";
// reverse client input and send back
    $output = strrev($input) . "\n";
    socket_write($spawn, $output, strlen($output)) or die("Could not write output\n");
// close sockets
    socket_close($spawn);
    socket_close($socket);
    listen();
}

set_time_limit(0);
listen();

取自http://www.codeproject.com/Tips/418814/Socket-Programming-in-PHP

然后使用Javascript創建客戶端套接字,如下所示

Java腳本

<!DOCTYPE HTML>
<html>
<head>
    <script type="text/javascript">
        function WebSocketTest()
        {
            if ("WebSocket" in window)
            {
                alert("WebSocket is supported by your Browser!");

                // Let us open a web socket
                var ws = new WebSocket("ws://localhost:25003");

                ws.onopen = function()
                {
                    // Web Socket is connected, send data using send()
                    ws.send("Message to send");
                    alert("Message is sent...");
                };

                ws.onmessage = function (evt)
                {
                    var received_msg = evt.data;
                    alert("Message is received...");
                };

                ws.onclose = function()
                {
                    // websocket is closed.
                    alert("Connection is closed...");
                };
            }

            else
            {
                // The browser doesn't support WebSocket
                alert("WebSocket NOT supported by your Browser!");
            }
        }
    </script>
</head>
<body>

<div id="sse">
    <a href="javascript:WebSocketTest()">Run WebSocket</a>
</div>

</body>
</html>

然后,我運行PHP服務器,它正在工作,正在監聽。 然后,我運行Javascript客戶端,它開始工作,PHP服務器正在接收來自Javascript的請求。

BUT來自PHP的響應是這樣的

在此處輸入圖片說明

我不了解如何更改客戶端消息,比方說我想像“ Hello”一樣發送消息。1.如何從javascript調用它,以便PHP服務器僅接收“ Hello”? 2.任何人都可以向我解釋這樣的每個url的功能是什么?

ws://localhost:25003/daemon.php

第二個參數是什么? 這是連接到我的PHP文件? 因為我嘗試定位到我的PHP,所以它不起作用。

PHP Socket服務器正常,問題是Javascript,它正在發送HTTP請求,而該發送是HTTP協議。

您可以在該端口上啟動PHP Web Server,並回答Ajax查詢中的問題。

像Web服務器一樣啟動php的命令行

php -S 127.0.0.1:25003

WebServer的文檔根目錄與PHP相同

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM