현재 위치: > 최신 기사 목록> Socket_accept ()를 사용하여 인트라넷 커뮤니케이션 서비스를 구축하십시오

Socket_accept ()를 사용하여 인트라넷 커뮤니케이션 서비스를 구축하십시오

M66 2025-06-02

PHP에서 Socket_accept () 는 클라이언트 연결을 수용하는 데 사용되는 기능이며 일반적으로 소켓 기반 네트워크 커뮤니케이션 프로그램에서 사용됩니다. 이 기사는 다른 소켓 기능과 결합하여 Socket_accept ()를 사용하여 간단한 인트라넷 통신 서비스를 구축하여 기본 클라이언트 서버 데이터 교환을 실현하는 방법을 소개합니다.

1. socket_accept () 란 무엇입니까?

Socket_accept ()는 소켓 연결 요청을 수락하는 데 사용됩니다. 일반적 으로이 기능을 호출하여 서버가 클라이언트 연결에 대한 서버를 듣고 클라이언트 연결을 대기하고 수락하여 클라이언트와 통신하기위한 새 소켓 리소스를 반환합니다.

2. 인트라넷 커뮤니케이션 서비스 예제

다음 샘플 코드는 Socket_accept ()를 사용하여 간단한 TCP 서버를 작성하고 인트라넷 포트를 듣고 클라이언트 요청을 수락하며 간단한 응답을 반환하는 방법을 보여줍니다.

 <?php
// 만들다TCP Socket
$server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$server) {
    die("无法만들다socket: " . socket_strerror(socket_last_error()) . "\n");
}

// 묶다IP그리고 포트,인트라넷에서 일반적으로 사용됩니다IP예:192.168.1.100,포트9000
$bindResult = socket_bind($server, '192.168.1.100', 9000);
if (!$bindResult) {
    die("无法묶다socket: " . socket_strerror(socket_last_error($server)) . "\n");
}

// 모니터링을 시작하십시오,대기 연결의 최대 수는입니다5
socket_listen($server, 5);
echo "서버가 시작되었습니다,청취...\n";

while (true) {
    // 클라이언트 연결을 기다리고 수락하십시오
    $client = socket_accept($server);
    if (!$client) {
        echo "연결 수용이 실패했습니다: " . socket_strerror(socket_last_error($server)) . "\n";
        continue;
    }

    // 클라이언트 데이터를 읽습니다,최대 읽기1024바이트
    $input = socket_read($client, 1024);
    $input = trim($input);
    echo "클라이언트 데이터를 받았습니다:{$input}\n";

    // 간단한 처리:클라이언트 메시지에 답장하십시오
    $response = "서버가 접수되었습니다: " . $input . "\n";
    socket_write($client, $response, strlen($response));

    // 클라이언트와의 연결을 닫습니다
    socket_close($client);
}

// 서버를 종료하십시오socket(일반적으로 코드는 여기에서 실행되지 않습니다)
socket_close($server);

3. 작동 지침

  • 코드의 Socket_bind 함수에서 IP 주소를 서버의 인트라넷 IP로 수정하십시오.

  • 스크립트를 실행 한 후 서버는 포트 9000을 듣고 클라이언트가 연결되기를 기다리기 시작합니다.

  • 클라이언트는 Telnet 또는 사용자 정의 소켓 프로그램을 통해 서버 IP 및 포트를 연결할 수 있습니다.

  • 서버가 클라이언트 메시지를 받으면 확인 정보를 반환합니다.

4. 사용자 정의 클라이언트로 테스트하십시오

클라이언트가 간단한 PHP 스크립트라고 가정합니다.

 <?php
$client = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$client) {
    die("고객socket만들다失败: " . socket_strerror(socket_last_error()) . "\n");
}

// 서버에 연결하십시오(서버 네트워크로 교체하십시오IP)
if (!socket_connect($client, '192.168.1.100', 9000)) {
    die("서버에 연결하지 못했습니다: " . socket_strerror(socket_last_error($client)) . "\n");
}

// 데이터를 보냅니다
$message = "Hello from client";
socket_write($client, $message, strlen($message));

// 서버 답변을 읽으십시오
$response = socket_read($client, 1024);
echo "서버 응답: " . $response . "\n";

socket_close($client);

이 클라이언트 스크립트를 실행 한 후 서버는 수신 된 메시지를 인쇄하고 클라이언트는 서버 답변을 표시합니다.

도메인 이름 교체 예제

프로그램에서 URL을 사용해야하는 경우 도메인 이름을 M66.net 으로 바꾸십시오. 예를 들어: