php socket 통신 예제

에코 “소켓 끄기…n”; 소켓_close($socket); 에코 “OKn 끄기”; ?> 우리는 거기에 많은 일을하지 않았습니다. 그냥 루프에 socket_accept를 넣어. Function socket_create는 소켓을 만들고 다른 네트워크 명령에서 사용할 수 있는 소켓 설명자입니다. 그래서 위의 예에서 우리는 방법을 배웠습니다 : 1. 소켓 2 만들기. 원격 서버 3에 연결합니다. 일부 데이터 4를 보냅니다. 답장 받기 가장 먼저 해야 할 일은 소켓을 만드는 것입니다. socket_create 함수는 이 작업을 수행합니다. 다음은 코드 샘플입니다: 여기서 생성된 소켓 리소스는 IP 주소 및 포트 번호에 바인딩됩니다. 위의 코드는 다음과 같은 속성이있는 소켓을 만듭니다 … stream_socket_client에서 만든 소켓 연결은 fopen을 통해 열린 파일과 마찬가지로 스트림입니다.

즉, fwrite를 사용하여 소켓에 바이트를 쓸 수 있으며 전체 응답을 읽기 위해 편리한 stream_get_contents 함수를 사용할 수 있습니다. 소켓이 성공적으로 만들어졌는지 확인합니다. onSocketFailure 함수는 이 항목의 소켓 오류 처리 예제에서 가져옵니다. 서버에 연결하는 것은 함수 stream_socket_client로 수행됩니다. 유일한 필수 인수는 연결하려는 소켓의 사양이며 성공 또는 오류에 대한 리소스를 반환합니다. 함수 recv는 소켓에서 데이터를 수신하는 데 사용됩니다. 다음 예제에서는 마지막 예제와 동일한 메시지를 보내고 서버로부터 회신을 수신합니다. 에코 “$ip` 포트 `$port`를 연결하려고…n”; $result = 소켓_연결($socket, $ip, $port); ($result < 0) { 에코 "socket_connect() 실패.nReason: ($result) " 소켓_strerror($result) . "n"; } {에코 "확인n 연결"; } 소켓 함수 중 어느 개라도 실패하면 socket_last_error 및 socket_strerror 함수를 사용하여 오류 정보를 검색할 수 있습니다. 함수 socket_listen의 두 번째 매개 변수를 백로그라고 합니다. 프로그램이 이미 사용 중인 경우 "대기 중"으로 유지되는 들어오는 연결 수를 제어합니다.

따라서 10을 지정하면 10개의 연결이 이미 처리되기를 기다리는 경우 11번째 연결 요청이 거부됩니다. 이것은 socket_accept를 확인한 후 더 명확해집니다. 함수 stream_socket_server는 다시 한 번 소켓 사양을 stream_socket_client에 전달된 문자열과 동일한 형식으로 첫 번째 인수로 가져옵니다. 이제 소켓을 사용하여 일부 서버 작업을 수행 할 시간입니다. 그러나 우리가 앞으로 나아가기 전에 당신이 그들을 필요로하는 경우에 다루어야 할 몇 가지 측면 주제가 있습니다. 경우(!socket_write($socket, $in, strlen($in)) { 에코 “socket_write())가 실패했습니다. 이유 : ” . [$socket]. “n”; }else { 에코 “서버에 메시지를 성공적으로 보내기!n”; 에코 “정보 보내기:$in “; } 소켓을 닫으면 소켓과 관련 리소스가 해제됩니다.

지금까지 서버 소켓을 준비했지만 스크립트는 실제로 아무 것도 하지 않습니다. 앞서 말한 목표를 유지하면 클라이언트 소켓에서 메시지를 읽은 다음 수신된 메시지를 클라이언트 소켓으로 다시 다시 보냅니다. 이제 바인딩이 완료되었으므로 소켓이 연결을 수신하도록 할 시간입니다. 소켓을 특정 IP 주소와 특정 포트 번호에 바인딩합니다. 이렇게 하면 이 포트 번호로 향하는 모든 들어오는 데이터가 이 응용 프로그램에서 수신되도록 합니다. 스트림 소켓은 파일처럼 클로즈로 닫을 수 있습니다.

This entry was posted in Uncategorized. Bookmark the permalink.