正文  软件开发 > PHP编程技术 >

PHP 结合实例认识 Socket,php结合实例socket

PHP 结合实例认识 Socket,php结合实例socket一、简介 (本部分参考自 揭开Socket的神秘面纱 - 源码工作室) 请结合下图 Socket 抽象层的位置来理解。Socket 是...

PHP 结合实例认识 Socket,php结合实例socket

一、简介

(本部分参考自 揭开Socket的神秘面纱 - 源码工作室)

请结合下图 Socket 抽象层的位置来理解。Socket 是应用层和 TCP/IP 协议族进行通信的中间软件抽象层,是一组接口。在设计模式中,就是一个门面模式,它把复杂的实现封装在接口后面,而只提供了一组简单的接口给用户调用。在普遍的程序语言中,这些接口一般是 create、bind、listen、accept、write、read、close 和 connect 等等。

<?php set_time_limit(0); // 去掉时间限制 ob_implicit_flush(); // 开启强制刷新 // 1. 创建Socket $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); // 2. 绑定端口和IP socket_bind($socket, ‘127.0.0.1‘, 11279); // 3. 端口监听 socket_listen($socket); echo ‘Server is listening!‘ . PHP_EOL; // 4. accept阻塞进程 $connect = socket_accept($socket); // 直到有连接进入,accept才会返回 echo ‘Client [‘ . $connect . ‘] is accessing...‘ . PHP_EOL; // 5. 交互 socket_write($connect, ‘Welcome, visitor! Now you can send message to the server.‘ . PHP_EOL); while ($connect) { // 获取请求 $request = socket_read($connect, 1024); echo ‘Client [‘. $connect .‘] message: ‘ . $request; // 关闭连接 if($request == "bye" . PHP_EOL){ socket_shutdown($connect); break; } // 发送响应 $response = ‘Your sended message: ‘ . $request; socket_write($connect, $response); } // 6. 销毁Socket socket_close($socket);

客户端:client.php

<?php
// 1. 创建Socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

// 2. 建立连接
$result = socket_connect($socket, ‘127.0.0.1‘, 11279);
if($result === false){
	socket_close($socket);
	die(‘Socket connect failed: ‘ . socket_strerror(socket_last_error($socket)));
}

// 3. 交互
while($result){    
    // 获取响应
    $response = socket_read($socket, 1024);
    echo $response;

    // 发送请求
    $request = fgets(STDIN);
    socket_write($socket, $request, 1024);

    // 关闭连接
    if($request == "bye" . PHP_EOL){
		socket_shutdown($socket);
    	break;
    }
}

// 4.销毁Socket
socket_close($socket);

  

参考链接:

揭开Socket编程的面纱

【PHPsocket编程专题(理论篇)】初步理解TCP/IP、Http、Socket.md

php socket通信(tcp/udp)实例分析

http://www.bkjia.com/PHPjc/1229586.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1229586.htmlTechArticlePHP 结合实例认识 Socket,php结合实例socket 一、简介 (本部分参考自揭开Socket的神秘面纱-源码工作室) 请结合下图 Socket 抽象层的位置来理...