Closed menzhu closed 3 weeks ago
贴一下errCode
属性的值,看一下错误原因
<?php
use Swoole\Coroutine;
use function Swoole\Coroutine\run;
run(function () {
$socket = new Coroutine\Socket(AF_INET, SOCK_STREAM, SOL_TCP);
var_dump($socket->errCode);
$retval = $socket->connect('127.0.0.1', 9501, 1);
while ($retval)
{
$n = $socket->send('hello');
var_dump($n);
$data = $socket->recv();
var_dump($data);
//发生错误或对端关闭连接,本端也需要关闭
if ($data === '' || $data === false) {
echo "errCode: {$socket->errCode}\n";
$socket->close();
break;
}
Coroutine::sleep(1.0);
}
var_dump($retval, $socket->errCode, $socket->errMsg);
});
你要连接tcp服务端的话尝试这么写,swoole关于协程socket客户端的文档我要改一下
贴一下
errCode
属性的值,看一下错误原因
errCode是22,Invalid argument。我是网卡上配置了多IP,想循环使用不同的IP发送ICMP请求。我用php原生的socket_bind是可以成功的
目前对于 SOCKET_RAW 的支持并不完整,ICMP 的话建议直接用 php 的函数
目前对于 SOCKET_RAW 的支持并不完整,ICMP 的话建议直接用 php 的函数
👌
Please answer these questions before submitting your issue.
use Swoole\Coroutine; use function Swoole\Coroutine\run;
run(function () { $socket = new Coroutine\Socket(AF_INET, SOCK_RAW, 1); $res = $socket->bind('4.4.4.12'); var_dump($res); var_dump($socket->errCode); $retval = $socket->connect('4.4.4.10', 0, 1); while ($retval) { $n = $socket->send('hello'); var_dump($n);
});