【问题标题】:I am not able to send message on web socket by using php我无法使用 php 在 Web 套接字上发送消息
【发布时间】:2016-02-18 14:22:56
【问题描述】:

我的网址:“http://provabextranet.com/es2al/test2_chat.php”。 我想在这个 URL 上发送消息。我使用了所有大多数示例,但无法发送。我使用了主机:'184.154.48.162'和端口:9001。 它是一个使用 JS 的网络套接字。我只想通过 php 而不是 JS 发送。 请帮帮我。

`<?php
echo "<h2>TCP/IP Connection</h2>\n";
$service_port = 9001;
$address = gethostbyname('www.provabextranet.com');
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
} else {
    echo "OK.\n";
}
echo "Attempting to connect to '$address' on port '$service_port'...";
echo socket_connect($socket, $address, $service_port) or die( socket_strerror(socket_last_error()));
socket_strerror(socket_last_error($socket)) . "\n";
$in = "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.provabextranet.com\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';

echo "<br>Sending HTTP HEAD request...<br>";
echo socket_sendto($socket, $in, strlen($in),0,$address,$service_port) or die( socket_strerror(socket_last_error()));
echo "OK.\n";
}
socket_close($socket);
echo "OK.\n\n";
?>`

输出:

TCP/IP 连接

好的。尝试连接到端口 '9001' 上的 '184.154.48.162'...1 发送 HTTP HEAD 请求... 1O K. 关闭插座...OK。

和其他程序:

`<?php
$host = '184.154.48.162';
$port = 9001;
$local = "184.154.48.162"; 
$data = 'hello world!'; 
    $head = "GET / HTTP/1.1"."\r\n".
            "Upgrade: WebSocket"."\r\n".
            "Connection: Upgrade"."\r\n".
            "Origin: $local"."\r\n".
            "Host: $host"."\r\n".
            "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ=="."\r\n".
            "Sec-WebSocket-Version: 13"."\r\n".
            "Content-Length: ".strlen($data)."\r\n"."\r\n";
    $sock = fsockopen($host, $port, $errno, $errstr, 2);
    fwrite($sock, $head ) or die('error:'.$errno.':'.$errstr);
    $headers = fread($sock, 2000);

    fwrite($sock, "hello" ,5) or die('error:'.$errno.':'.$errstr);
    echo socket_strerror(socket_last_error());
    $wsdata = fread($sock, 2000); 
    $retdata = trim($wsdata,"\x00\xff");
        $contents = "";
    while (!feof($sock)) {
        echo $contents .= "<br>".fgets($sock, 4096);
    }
    fclose($sock);
?>`

输出: 成功

【问题讨论】:

  • Hiya Vijay,为了社区的帮助,请准确输入您尝试过的每个项目,以及确切的结果。问题可能是 PHP 语法,但也可能是您服务器的防火墙配置,看到了吗?
  • 您可以发布您尝试过的内容吗?我们不会点击我们不信任的链接......如果我们不知道他的代码的确切错误/问题,我们将无法帮助您。

标签: php


【解决方案1】:

我的英语不好,但明白我想说什么.. 实际上为此,您需要打开一个您使用的端口,**

先研究如何打开端口,然后只有你可以发送或接收消息

**。如果您绑定,那么您不必为相同的 ip:port 使用绑定或连接。 您已存储在数组中并检查它何时在数组中发送某些内容,以知道是否已经绑定,如果绑定则无需再次绑定,否则使用 ip:port 绑定

【讨论】:

    猜你喜欢
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 2015-05-17
    相关资源
    最近更新 更多