socket write error 解决方法_62、php利用原生socket创建tcp服务

1、案例函数汇总

fa65f311679546415f664158de7fdb7d.png

2、案例

通过socket创建tcp,并等待客户端连接。然后分别打印本地和远程的ip和port连接信息。并客户端发送的信息原封不动地发还会给客户端

2.1、tcp服务源码

/**

* Copyright(C) Iamasb

* @project : 3、workerman相关知识点

* @explain : 原生socket创建创建tcp服务

* @filename : socket_tcp.php

* @author : Iamasb

*/

// 创建tcp

if (!($resource = socket_create(AF_INET,SOCK_STREAM,SOL_TCP))) {

echo "socket create is error";

exit();

}

// 绑定当前主机和端口

if (!socket_bind($resource,'0.0.0.0','1234')) {

echo "socket bind is error";

exit();

}

// 启动监听

if (!socket_listen($resource)) {

echo "socket listen is error";

exit();

}

// 设置端口复用

if (!socket_set_option($resource, SOL_SOCKET, SO_REUSEADDR, 1)) {

echo 'Unable to set option on socket: '. socket_strerror(socket_last_error()) . PHP_EOL;

exit;

}

while (1) {

$client = socket_accept($resource);

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

echo 'local->',$addr,'-->',$port,PHP_EOL;

socket_getpeername($client,$addr,$port);

echo 'remote->',$addr,'-->',$port,PHP_EOL;

$string = socket_read($client,1024);

echo $string;

socket_write($client,$string,strlen($string));

socket_close($client);

}

2.2、启动tcp服务

5cee4544de5136c59ef94d1cb769dfe9.png

3、测试

测试有两种方式,一种是通过编写客户端,另一种是通过telnet

3.1、通过telnet

6d5472c6c07f215aed6a4330ce39e760.png

此时tcp服务端的显示结果

128f77638a954b5a5ebf085471ab4903.png

3.2、通过socket编写tcp客户端,并执行客户端

/**

* tcp 客户端

*/

if (!($resource = socket_create(AF_INET,SOCK_STREAM,SOL_TCP))) {

echo "socket create is error";

exit();

}

if (!socket_connect($resource,'127.0.0.1','1234')) {

echo 'connect is error';

exit();

}

$string = 'hello world';

echo socket_send($resource,$string,strlen($string),MSG_EOF);

echo socket_read($resource,1024);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值