PHP进行tcp连接
业务里用到tcp跟后端服务进行通信。
原生PHP的写法。
$host = '服务端IP'; $port = 端口号; $timeout = 5; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if (socket_connect($socket, $host, $port) === false) { // 创建连接 socket_close($socket); $message = 'create socket error'; throw new Exception($message, socket_last_error()); } if (socket_write($socket, $buffer) === false) { // 发包 socket_close($socket); $message = sprintf("write socket error:%s", socket_strerror(socket_last_error())); throw new Exception($message, socket_last_error()); } socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, $timeout); $rspBuffer = socket_read($socket, 65536); // 接收回包 socket_close($socket);
使用swoole的写法。
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC); $ret = $client->connect('服务端IP', 端口号, 0.5, 0); // 创建连接 if (!$ret) { throw new Exception('connect error', $client->errCode); } $client->send($buffer); // 发包 $rspBuffer = $client->recv(); // 接收回包
一目了然,使用swoole的写法更加清楚明了。