>  기사  >  php教程  >  PHP 소켓 프로그래밍 시작하기

PHP 소켓 프로그래밍 시작하기

黄舟
黄舟원래의
2016-12-17 10:34:501593검색

간단한 예부터 시작하겠습니다. 입력 문자열을 수신하고 이 문자열을 처리하여 클라이언트에 반환하는 TCP 서비스는 다음과 같습니다.

php 코드:

<?
// 设置一些基本的变量
$host="192.168.1.99";
$port=1234;
// 设置超时时间
set_time_limit(0);
// 创建一个Socket
$socket=socket_create(AF_INET,SOCK_STREAM,0) or die("Could not create
socket\n");
//绑定Socket到端口
$result=socket_bind($socket,$host,$port) or die("Could not bind to
socket\n");
// 开始监听链接
$result=socket_listen($socket,3) or die("Could not set up socket
listener\n");
// accept incoming connections
// 另一个Socket来处理通信
$spawn=socket_accept($socket) or die("Could not accept incoming
connection\n");
// 获得客户端的输入
$input=socket_read($spawn,1024) or die("Could not read input\n");
// 清空输入字符串
$input=trim($input);
//处理客户端输入并返回结果
$output=strrev($input) ."\n";
socket_write($spawn,$output,strlen($output)) or die("Could not write
output\n");
// 关闭sockets
socket_close($spawn);
socket_close($socket);
?>

각 단계에 대한 자세한 설명은 다음과 같습니다.

1. 첫 번째 단계는 소켓이 실행되는 서버의 IP 주소와 포트를 저장하는 두 가지 변수를 설정하는 것입니다. 이 포트가 사용되지 않는 경우 서버 및 포트(이 포트는 1에서 65535 사이의 숫자일 수 있음)

<?
// 设置两个变量
$host="192.168.1.99";
$port=1234;
?>

2에서 set_time_out() 함수를 사용할 수 있습니다. 서버 측에서 PHP가 실행 중인지 확인합니다.

PHP 코드:

<?
// 超时时间
set_time_limit(0);
?>

3. 이전 것들은 이제 소켓을 생성하기 위해 소켓_creat() 함수를 사용할 시간입니다---이 함수는 모든 후속 함수에서 사용될 소켓 핸들을 반환합니다.

PHP 코드:

<?
// 创建Socket
$socket=socket_create(AF_INET,SOCK_STREAM,0) or die("Could not create socket\n");
?>

첫 번째 매개변수 "AF_INET"이 사용됩니다. 도메인 이름을 지정합니다.
두 번째 매개변수 "SOCK_STREM"은 생성될 소켓 유형(이 예에서는 TCP 유형)을 함수에 알려줍니다.

따라서 UDP 소켓을 생성하려면 다음 코드를 사용하면 됩니다.

PHP 코드:

<?
// 创建 socket
$socket=socket_create(AF_INET,SOCK_DGRAM,0) or die("Could not create socket\n");
?>

4. , 다음 단계는 지정된 주소와 포트를 지정하거나 바인딩하는 것입니다.

PHP 코드:

<?
// 绑定 socket to 指定地址和端口
$result=socket_bind($socket,$host,$port) or die("Could not bind to socket\n");
?>

5. 소켓이 생성되어 포트에 바인딩되면 외부 연결 수신을 시작할 수 있습니다. PHP에서는 소켓_listen() 함수를 통해 수신을 시작할 수 있으며, 이 예에서는 두 번째 매개변수: 3)

PHP 코드:

<?
// 开始监听连接
$result=socket_listen($socket,3) or die("Could not set up socket listener\n");
?>

6. 지금까지 서버는 기본적으로 클라이언트의 연결 요청만 기다리고 있습니다. 클라이언트 연결이 수신되면 소켓_assept() 함수가 작동하기 시작합니다. 이 함수는 연결 요청을 수신하고 클라이언트와 서버 간의 정보를 처리하기 위해 다른 하위 소켓을 호출합니다. PHP 코드:

이제 이 하위 소켓을 후속 클라이언트-서버 통신에 사용할 수 있습니다.

7. 연결이 설정되면 서버는 클라이언트가 일부 입력을 보낼 때까지 기다립니다. 정보는 소켓_read() 함수에 의해 얻어지고 PHP의 $input 변수에 할당될 수 있습니다.
<?
//接受请求链接
// 调用子socket 处理信息
$spawn=socket_accept($socket) or die("Could not accept incoming connection\n");
?>



PHP 코드:

socker_read의 두 번째 매개변수는 읽을 바이트 수를 지정하는 데 사용됩니다.

참고: 소켓_read 함수는 쉘 클라이언트를 계속 읽습니다. n, t 또는
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP 소켓 기본 사항다음 기사:PHP 소켓 기본 사항