socket create php,socket_create_listen

# socket_create_listen

* * * * *

说明:

> 在指定的端口上打开类型为AF_INET的资源流套接字,用于接受连接

语法:

~~~

resource socket_create_listen ( int $port [, int $backlog = 128 ] )

~~~

参数:

| 参数 | 描述 |

| --- | --- |

| port | 需要在哪个端口创建,没有指定端口号,或者为0,则随机选择一个端口号,端口号必须为1 - 65535的有效端口号|

| backlog | 设置该socket可接受连接的最大数|

返回值:

| 成功 | 失败 |

| --- | --- |

| 返回一个socket套接字资源 (resource数据类型) | false |

返回失败,错误代码会传入 socket_last_error() ,如果将此参数传入 socket_strerror() 则可以得到错误的文字说明。

技术细节:

PHP版本:PHP 4 >= 4.1.0, PHP 5, PHP 7

实例:

服务端代码 server.php

~~~

// 在5520端口上打开资源流套接字,用于接受连接

$sock = socket_create_listen(5520);

//根据$sock 获取 主机地址 和 端口

socket_getsockname($sock, $addr, $port);

print "Server Listening on $addr:$port\n";

//循环 判断是否有连接

while ($new_socket = socket_accept($sock)) {

// 获取客户端连接的 地址 和 端口

socket_getpeername($new_socket, $raddr, $rport);

print "Received Connection from $raddr:$rport\n";

}

//工作完毕,关闭套接流

socket_close($sock);

~~~

客户端代码 client.php

~~~

//创建一个socket套接流

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

//连接上面服务端的套接流

socket_connect($socket, '127.0.0.1', 5520);

//工作完毕,关闭套接流

socket_close($socket);

~~~

打开windows的cmd窗口,然后,运行php server.php

再打开另外一个cmd窗口 ,然后,运行php client.php

服务端信息:

![](https://box.kancloud.cn/a6ddaaeb934080efafc3ba6413710973_354x59.png)

注:

1、windows中需要把 php这个运行命名 加入环境变量中

2、需要在php.ini 开启extension=sockets 模块

资料来源:

http://php.net/manual/zh/function.socket-create-listen.php

backlog参数详解:https://www.jianshu.com/p/e6f2036621f4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值