php客户端

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
  
<?php
header("content-type:text/html;charset=utf-8");
 
/*
 * TCP通信-客户端
 * php 客户端
 * */
 
#创建一个长连接
#加入SWOOLE_KEEP标志后,创建的TCP连接在PHP请求结束或者调用$cli->close时并不会关闭。
#下一次执行connect调用时会复用上一次创建的连接
$cli = new swoole_client(SWOOLE_TCP | SWOOLE_KEEP);
 
#连接到远程服务器
$cli->connect('127.0.0.1',9501);
 
#发送数据
$cli->send('测试发送');
 
#接收数据
$return = $cli->recv($size=1024);
echo $return;
 
#关闭
$cli->close();
 
 
  

TCP服务器

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
  
<?php
header("content-type:text/html;charset=utf-8");
 
/*
 * 创建一个TCP服务器
 * */
 
new server_tcp();
 
class server_tcp
{
    #链接的客户端
    public static $connect_fd = [];
    public static $connect_from = [];
    #swoole_server对象
    public $serv;
 
    public function __construct()
    {
        #创建Server对象,监听 127.0.0.1:9501端口
        $serv = new swoole_server("0.0.0.0", 9501);
        #监听连接进入事件
        $serv->on('connect'function ($serv, $fd,$from_id) {
            self::$connect_fd[$fd] = $fd;
            self::$connect_from[$fd] = $from_id;
            echo "客户端:连接.$fd\n";
        });
        #监听连接关闭事件
        $serv->on('close'function ($serv, $fd) {
            unset(self::$connect_fd[$fd]);
            unset(self::$connect_from[$fd]);
            echo "客户端: 关闭.$fd\n";
        });
        #监听客户端数据
        $serv->on('receive',function ($serv,$fd,$from_id,$data){
            $this->serv = $serv;
            #调用send()方法发送数据
            $this->send($fd,$from_id,$data);
        });
        #启动服务器
        $serv->start();
    }
 
    #向客户端发送数据
    public function send($fd,$from_id,$data)
    {
        foreach (self::$connect_fd as $k=>$v)
        {
            $this->serv->send($v, "$fd: ".$data);
        }
    }
}
 
  
---------------------------------------------------------------------------------------------



唯有志存高远,方能风行天下。

道之所存,虽千万人吾往矣! 情之所钟,虽千万里吾念矣~

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。