php的socket连接代码

发布于 2024-11-08 20:02:57 字数 572 浏览 0 评论 0原文

我正在编写一个简单的 php 套接字代码。
这是我的代码,

 <?php

    $address="127.0.0.1";
    $port=9875;
    echo "I am here";

    if(false==($socket=  socket_create(AF_INET,SOCK_STREAM, SOL_TCP)))
    {
        echo "could not create socket";
    }
    socket_bind($socket, $address, $port) or die ("could not bind socket");
    socket_listen($socket);
    if(($client=socket_accept($socket)))
        echo "client is here";

    ?>

当我运行这个程序时,我的浏览器只显示等待本地主机。
我的代码有问题吗?
我正在使用 xammp 1.7.4 。
我想知道的另一件事是,如果我想获取 HTTP 或 FTP 请求,我是否只能更改端口号?

I am writing a simple php socket code.
Here is my code

 <?php

    $address="127.0.0.1";
    $port=9875;
    echo "I am here";

    if(false==($socket=  socket_create(AF_INET,SOCK_STREAM, SOL_TCP)))
    {
        echo "could not create socket";
    }
    socket_bind($socket, $address, $port) or die ("could not bind socket");
    socket_listen($socket);
    if(($client=socket_accept($socket)))
        echo "client is here";

    ?>

when I run this program my browser only shows waiting for localhost.
Is there any problem in my code?
I am using xammp 1.7.4 .
Another thing I want to know if I want to get a HTTP or FTP request do I have change only the port number?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

素罗衫 2024-11-15 20:02:57

我验证了代码并在我的系统中进行了测试,它工作正常。运行客户端后显示“客户端在这里”。

文件名:server.php

<?php
    $address="127.0.0.1";
    $port=9875;
    echo "I am here";
    set_time_limit (0); 
    if(false==($socket=  socket_create(AF_INET,SOCK_STREAM, SOL_TCP)))
    {
        echo "could not create socket";
    }
    socket_bind($socket, $address, $port) or die ("could not bind socket");
    socket_listen($socket);
    if(($client=socket_accept($socket)))
        echo "client is here";

    socket_close($socket); 
    ?>

首先运行server.php 文件。

文件:client.php

<?php
$host="127.0.0.1" ;
$port=9875;
$timeout=30;
$sk=fsockopen($host,$port,$errnum,$errstr,$timeout) ;
if (!is_resource($sk)) {
    exit("connection fail: ".$errnum." ".$errstr) ;
} else {

    echo "Connected";
    }
?>

现在运行 client.php

你的输出应该是这样的(正如我在我的系统中得到的那样)

我在这里客户在这里

如果没有,请确保您的防火墙没有阻止该请求。如果您有防病毒软件,请暂时禁用它。

I verified the code and tested in my system and it works correctly. Showing as "client is here" after running the client.

File Name: server.php

<?php
    $address="127.0.0.1";
    $port=9875;
    echo "I am here";
    set_time_limit (0); 
    if(false==($socket=  socket_create(AF_INET,SOCK_STREAM, SOL_TCP)))
    {
        echo "could not create socket";
    }
    socket_bind($socket, $address, $port) or die ("could not bind socket");
    socket_listen($socket);
    if(($client=socket_accept($socket)))
        echo "client is here";

    socket_close($socket); 
    ?>

First run the server.php file.

File: client.php

<?php
$host="127.0.0.1" ;
$port=9875;
$timeout=30;
$sk=fsockopen($host,$port,$errnum,$errstr,$timeout) ;
if (!is_resource($sk)) {
    exit("connection fail: ".$errnum." ".$errstr) ;
} else {

    echo "Connected";
    }
?>

Now run the client.php

Your output should be like this (as I got in my system)

I am hereclient is here

If not, make sure your firewall is not blocking the request. Temporarily disable antivirus if you have one.

べ繥欢鉨o。 2024-11-15 20:02:57

这是等待的预期行为。
您编写的程序是一个套接字服务器,它准备侦听指定端口的连接,直到那时它才会等待。

您可以创建一个连接的客户端,以便您将看到“客户端在这里”的响应。客户端可以是任何编程语言,包括 PHP。

下面是 PHP 的示例代码(我没有验证)。

$fp = stream_socket_client("127.0.0.1:9875", $errno, $errstr);

if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
   // Handle code here for reading/writing
}

您可以查看此链接以获取 PHP 示例客户端代码。

编辑

$host = "127.0.0.1";
$port = 9875;
$timeout = 30;
$sk = fsockopen($host, $port, $errnum, $errstr, $timeout);
if (!is_resource($sk)) {
    exit("connection fail: " . $errnum . " " . $errstr);
} else {
    echo "Connected";
}

That is the expected behaviour of waiting.
The program you have written is a socket server which is ready to listen to the connection with the specified port, until then it will wait.

You can create a client who connects so that you will see the response "Client is here". The client can be any programming language including PHP.

Below is a sample code in PHP (I didn't verify it).

$fp = stream_socket_client("127.0.0.1:9875", $errno, $errstr);

if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
   // Handle code here for reading/writing
}

You can check this link for sample client code in PHP.

EDIT

$host = "127.0.0.1";
$port = 9875;
$timeout = 30;
$sk = fsockopen($host, $port, $errnum, $errstr, $timeout);
if (!is_resource($sk)) {
    exit("connection fail: " . $errnum . " " . $errstr);
} else {
    echo "Connected";
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文