일반적으로 "소켓"이라고도 불리는 소켓은 IP 주소와 포트를 설명하는 데 사용되며 통신 체인에 대한 핸들입니다. 응용 프로그램은 일반적으로 "소켓"을 통해 서버에 요청하거나 네트워크 요청에 응답합니다. 이 기사에서는 주로 PHP의 소켓 문자 간의 연결 프로세스에 대해 설명합니다. 관심 있는 친구는 이에 대해 배울 수 있습니다.
링크가 시작되는 방식과 로컬 소켓이 연결되는 대상에 따라 소켓 간의 연결 프로세스는 세 단계로 나눌 수 있습니다.
1 서버 모니터링: 서버 측 소켓입니다. 특정 클라이언트 소켓을 찾아내지는 않지만 연결을 기다리는 상태로 네트워크 상태를 실시간으로 모니터링합니다.
2. 클라이언트 요청: 클라이언트의 소켓에서 이루어진 연결 요청을 말하며, 연결 대상은 서버의 소켓입니다. 이를 위해 클라이언트의 소켓은 먼저 연결하려는 서버의 소켓을 숙지하고 서버 소켓의 주소와 포트 번호를 지정한 다음 서버의 소켓과 마찬가지로 연결 요청을 해야 합니다.
3. 연결 확인: 서버 측 소켓이 클라이언트 소켓의 연결 요청을 수신하거나 수신할 때 클라이언트 소켓의 요청에 응답하고 새 스레드를 설정하며 서버 측 소켓 설명을 의미합니다. 클라이언트가 이 설명을 확인하면 연결이 설정됩니다. 서버측 소켓은 계속 수신 대기 상태에 있으며 다른 클라이언트 소켓으로부터 링크 요청을 계속 수신합니다.
1. 테스트 환경 :
서버 ip : xxx.xxx.xxx.1
클라이언트 ip : xxx.xxx.xxx.2
2. 테스트 프로세스 :
클라이언트 서버는 로컬 컴퓨터의 소켓(xxx.xxx.xxx.1)을 통해 서버의 소켓 서버(xxx.xxx.xxx.2)로 데이터를 보냅니다. 서버는 보낸 데이터를 받은 후 일부 데이터를 반환합니다.
3. 서버 파일 콘텐츠:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <?php
$tcp = getprotobyname ( "tcp" );
$socket = socket_create(AF_INFT , SOCK_STREAM , $tcp );
socket_bind( $socket , 'xxx.xxx.xxx.1' , 10008);
socket_listen( $socket );
$buffer = "connect" ;
while (true){
$connection = socket-accept( $scoket );
if (!connection){
echo "connect faild" ;
} else {
echo "Socket connected \n" ;
if ( $buffer != "" ){
echo "send data to client\n" ;
socket_write( $connection , $buffer , "\n" );
echo "Wrote to socket\n" ;
} else {
echo "no data in the buffer\n" ;
}
while ( $data = $socket_read ( $connection , 1024 , PHP_NORMAL_READ)){
printf( "Buffer:" . $data .'\n');
socket-wirte( $coennection , "Thank you client , you data is Received success \n" );
}
}
socket_close( $connection );
printf( "Closed the socket\n" );
}
?>
|
로그인 후 복사
4. 클라이언트 파일 콘텐츠:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php
$socket = se);
$connection = socket_connect( $socket , 'xxx.xxx.xxx.1' , 10008);
$send_data = "This data will Send to server!" ;
while ( $buffer = @socket_read( $socket , 1024,PHP_NORMAL_READ)){
if (preg_match( "/not connect/" , $buffer )){
echo "don't connect\n" ;
break ;
} else {
echo "Buffer Data: " . $buffer .'\n';
echo "Writing to Socket\n" ;
if (!socket_write( $socket , "$send_data\n" )){
echo "Write failed\n" ;
}
while ( $buffer = socket_read( $socket , 1024 , PHP_NORMAL_READ)){
echo "send to server: $send-data\n response from server was:" . $buffer . "\n" ;
}
}
}
?>
|
로그인 후 복사
5. 서버 소켓 서비스에서 프로세스를 시작합니다.
1 2 | #/usr/local/php/bin/php -a/home/server.php
Interactive mode enable 互动模式启动
|
로그인 후 복사
6. 서버 구동 후 시작된 프로세스와 포트를 확인하세요.
1 2 3 | #netstat -tnlp |grep 10008
tcp 0 0 192.168.13:10008 0.0.0.0:* LISTEN
28892/php
|
로그인 후 복사
7. 클라이언트(192.168.1.2)에서 전송을 실행합니다. 에에
에잇 , 서버로 돌아가 수신된 정보를 확인하세요.
1 2 | #/usr/local/php/bin/php -a client.php
Interactive mode enabled
|
로그인 후 복사
관련 튜토리얼: PHP 비디오 튜토리얼
위 내용은 PHP에서 소켓 소켓을 연결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!