현재 위치: > 최신 기사 목록> Stream_Socket_recvfr from의 자세한 사용 방법과 단계는 무엇입니까?

Stream_Socket_recvfr from의 자세한 사용 방법과 단계는 무엇입니까?

gitbox 2025-08-04
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 코드 의이 부분은 기사의 내용과 관련이 없습니다.,예를 들어</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"이 기사를 읽을 수 있습니다PHP튜토리얼 기사。"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/*
 * 제목:stream_socket_recvfrom기능의 자세한 사용 방법과 단계는 무엇입니까??
 *
 * 존재하다PHP가운데,stream_socket_recvfrom네트워크 소켓에서 데이터를 수신하는 기능입니다.,일반적으로 사용됩니다UDP또는 연결이없는 소켓 통신。
 * 它可以从指定的소켓资源가운데读取数据,그리고 보내기 끝의 주소 정보를 반환 할 수 있습니다.,네트워크 데이터 상호 작용을 실현하는 데 편리합니다。
 *
 * 하나、함수 정의
 * int stream_socket_recvfrom(resource $socket, int $length, int $flags = 0, string &amp;$address = null)
 *
 * 매개 변수 설명:
 * - $socket:要从가운데读取数据的소켓资源。
 * - $length:최대 바이트 수를 읽습니다。
 * - $flags:선택 과목,읽기 동작을 제어하는 깃발,기본0。
 * - &amp;$address:선택 과목,참조 변수를 전달합니다,전송 끝의 주소 정보를받는 데 사용됩니다(IP그리고 포트)。
 *
 * 반환 값:
 * 실제 바이트 수를 반환합니다,실패에 대한 반환false。
 *
 * 둘、단계와 예제를 사용하십시오
 *
 * 1. 만들다UDP소켓(또한 사용할 수 있습니다TCP그러나 보통recvfrom연결없는 프로토콜 용)
 * 2. 绑定本地地址그리고 포트,데이터를 듣습니다
 * 3. 부르다stream_socket_recvfrom데이터를 수신합니다
 * 4. 수신 된 데이터를 처리하고 주소를 보내십시오
 *
 * 샘플 코드:
 */</span>

</span><span><span class="hljs-variable">$socket</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_socket_server</span></span><span>(</span><span><span class="hljs-string">"udp://0.0.0.0:9999"</span></span><span>, </span><span><span class="hljs-variable">$errno</span></span><span>, </span><span><span class="hljs-variable">$errstr</span></span><span>, STREAM_SERVER_BIND);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$socket</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"无法만들다UDP소켓:<span class="hljs-subst">$errstr</span></span></span><span> (</span><span><span class="hljs-subst">$errno</span></span><span>)");
}

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"UDP서버가 시작되었습니다,감시 장치9999포트...\n"</span></span><span>;

</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-literal">true</span></span><span>) {
    </span><span><span class="hljs-variable">$buf</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_socket_recvfrom</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-number">1024</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$peer</span></span><span>);
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$buf</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"데이터를 수신합니다失败\n"</span></span><span>;
        </span><span><span class="hljs-keyword">break</span></span><span>;
    }
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"수령 <span class="hljs-subst">$peer</span></span></span><span> 데이터의 데이터: </span><span><span class="hljs-subst">$buf</span></span><span>\n";

    </span><span><span class="hljs-comment">// 필요에 따라 고객에게 응답 할 수 있습니다</span></span><span>
    </span><span><span class="hljs-variable">$response</span></span><span> = </span><span><span class="hljs-string">"수신 된 데이터:"</span></span><span> . </span><span><span class="hljs-variable">$buf</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">stream_socket_sendto</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-variable">$response</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$peer</span></span><span>);
}

<span class="hljs-comment">/*
 * 삼、사용에 대한 메모
 * - stream_socket_recvfrom연결없는 프로토콜에 적합합니다UDP,TCP연결은 다목적입니다stream_socket_recv。
 * - 반품을 처리해야합니다false상황,프로그램 예외를 피하십시오。
 * - $address매개 변수는 참조별로 전달됩니다,발신자 정보를 쉽게 얻을 수 있습니다。
 * - 들어올 때$length너무 큽니다,성능에 영향을 줄 수 있습니다,실제 데이터 크기에 따라 합리적으로 설정하는 것이 좋습니다.。
 *
 * 요약:
 * stream_socket_recvfrom예PHP가운데处理UDP패킷 수신의 일반적인 기능,유연하고 전송 정보를 얻을 수 있습니다,
 * 간단한 구현에 적합합니다UDP서버 또는 네트워크 통신 기능。
 */</span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>