socket_listen($socket);
$clientSocket = socket_accept($socket);
PHP에서 소켓을 구현하는 방법에 대한 자세한 설명
PHP는 웹 개발에 널리 사용되는 서버 측 스크립팅 언어인 반면, 소켓은 서버 응용 프로그램이나 클라이언트 응용 프로그램에서 데이터를 보내거나 받는 데 사용할 수 있는 범용 인터페이스입니다. PHP는 소켓을 사용하여 네트워크의 TCP/IP 프로토콜을 기반으로 소켓 통신을 수행하여 웹 서버에서 데이터 상호 작용을 실현할 수 있습니다.
PHP는 매우 편리한 소켓 확장을 제공합니다. 이 확장을 통해 소켓 프로그래밍을 쉽게 구현할 수 있습니다. 아래에서는 PHP에서 소켓을 구현하는 방법을 소개하겠습니다.
소켓 확장 설치
PHP 5.0.0 버전 이후 소켓 확장은 기본적으로 PHP에 포함되어 있으므로 대부분의 PHP에는 이미 이 확장이 포함되어 있습니다. 그러나 PHP 버전이 너무 오래되었거나 이 확장 기능이 포함되어 있지 않으면 직접 설치해야 합니다. 다음 명령을 통해 Linux에 설치할 수 있습니다.
sudo apt-get install php7.0-sockets
Windows 시스템을 사용하는 경우 PHP 공식 웹사이트에 가서 해당 확장 파일을 다운로드한 후 php.ini 파일에 확장 파일을 추가하세요.
소켓 연결 생성
먼저 PHP에서 소켓 연결을 생성하려면, 이 함수를 호출할 때 세 가지 매개변수를 전달해야 합니다:
- domain: 프로토콜 도메인 , 일반적으로 사용되는 것은 AF_INET, AF_INET6 및 AF_UNIX이며, 가장 일반적으로 사용되는 것은 IPv4 프로토콜을 나타내는 AF_INET입니다. IPv6 프로토콜을 사용하려면 AF_INET6을 사용해야 합니다. 유형, 일반적으로 사용되는 것은 다음과 같습니다. SOCK_STREAM, SOCK_DGRAM, SOCK_RAW 중 가장 일반적으로 사용되는 것은 스트림 기반 TCP 연결을 나타내는 SOCK_STREAM입니다.
- 다음은 소켓_create 함수를 사용하여 연결을 설정하는 예입니다.
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
로그인 후 복사연결을 성공적으로 생성한 후 소켓을 로컬 포트에 바인딩해야 합니다.
socket_bind($socket, 0, 8080);
여기서 소켓은 로컬 IP에 바인딩됩니다. 포트 8080의 주소와 포트 번호. 특정 IP 주소에 바인딩하려면 두 번째 매개변수를 해당 IP 주소로 설정할 수 있습니다.
연결 수신소켓이 로컬 포트에 바인딩되면 클라이언트 연결 요청 수신을 시작할 수 있습니다. 이는 소켓_listen 함수를 사용하여 수행해야 합니다. socket_listen($socket);
로그인 후 복사 연결 요청 수신 대기를 시작하기 전에 소켓의 일부 매개변수를 구성하려면 소켓_set_option 함수를 사용할 수 있습니다. 예:
socket_listen($socket);
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
이 예에서는 SO_REUSEADDR 옵션을 1로 설정합니다. 이는 로컬 주소를 재사용할 수 있음을 의미하므로 "주소가 이미 사용 중입니다" 오류를 방지할 수 있습니다.
연결 요청 수신클라이언트가 소켓에 연결되면 소켓_accept 함수를 사용하여 연결 요청을 받아야 합니다. $clientSocket = socket_accept($socket);
로그인 후 복사클라이언트가 연결되면 이 함수는 새 소켓 핸들을 반환합니다. 고객과의 의사소통에 사용됩니다.
데이터 보내기 및 받기
$clientSocket = socket_accept($socket);
소켓 연결이 설정된 후 클라이언트와 서버는 서로 설정된 소켓 연결을 통해 데이터를 보내고 받을 수 있습니다.
데이터 보내기- 서버는 소켓_쓰기 함수를 사용하여 클라이언트에 데이터를 보냅니다.
$msg = "Hello, Client!"; socket_write($clientSocket, $msg, strlen($msg));
로그인 후 복사이 예에서는 클라이언트에 메시지를 보냅니다.
- 클라이언트는 서버에 데이터를 보내고, 서버는 소켓_read 함수를 통해 데이터를 수신할 수 있습니다.
$msg = socket_read($clientSocket, 1024);
로그인 후 복사이 예에서는 클라이언트로부터 매번 1024바이트의 데이터를 수신하여 서버에 저장합니다. $msg 변수입니다.
socket_read 함수는 클라이언트가 연결을 닫았음을 나타내는 빈 문자열을 반환할 수 있다는 점에 유의해야 합니다.
연결 종료데이터 전송이 완료되면 연결을 종료해야 합니다. 이는 소켓_close 함수를 사용하여 구현해야 합니다: socket_close($socket);
socket_close($clientSocket);
로그인 후 복사 그중 첫 번째 소켓 핸들은 서버 소켓을 나타내고 두 번째 소켓 핸들은 클라이언트와 설정된 소켓 연결을 나타냅니다.
요약
socket_close($socket); socket_close($clientSocket);
PHP에서는 소켓 확장을 사용하여 소켓 프로그래밍을 수행할 수 있습니다. 우리는 소켓 연결을 생성하기 위해 소켓_create 함수를 사용할 수 있고, 로컬 포트에 소켓을 바인드하기 위해 소켓_바인드 함수, 요청 수신을 시작하기 위해 소켓_리스닝 함수, 연결 요청을 수신하기 위해 소켓_accept 함수, 데이터를 수신하기 위해 소켓_read 함수, 소켓_쓰기를 사용할 수 있습니다. 데이터를 전송하는 함수, 마지막으로 연결을 닫는 소켓_close 함수입니다. PHP 소켓 프로그래밍을 배우고 싶다면 이 기사에 제공된 예제를 기반으로 연습할 수 있습니다.
위 내용은 PHP에서 소켓을 구현하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu
