아래 그림의 Socket 추상화 레이어 위치를 기준으로 이해해주세요. 소켓은 애플리케이션 계층과 TCP/IP 프로토콜 제품군 간의 통신을 위한 중간 소프트웨어 추상화 계층입니다. 디자인 패턴에서는 인터페이스 뒤에 복잡한 구현을 캡슐화하고 사용자가 호출할 수 있는 간단한 인터페이스 세트만 제공하는 파사드 패턴입니다. 일반적인 프로그래밍 언어에서 이러한 인터페이스는 일반적으로 생성, 바인딩, 수신, 수락, 쓰기, 읽기, 닫기, 연결 등입니다.
1. 렌더링
2. 코드
서버: Server.php
<?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);
위 내용은 PHP는 예제를 사용하여 소켓이 무엇인지 이해합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!