간단한 예부터 시작하겠습니다. 입력 문자열을 수신하고 이 문자열을 처리하여 클라이언트에 반환하는 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 코드:
<? //接受请求链接 // 调用子socket 处理信息 $spawn=socket_accept($socket) or die("Could not accept incoming connection\n"); ?>
PHP 코드: