IpMessenger에서 사활 감시와 메시지 발송 클라이언트를 만들었습니다 (php)
7559 단어 socketPHPipmessenger
Socket 형식
참조IP Messenger 프로토콜 의사록
(이 PC는 알고 있음) IPMessenger를 사용하는 클라이언트 목록 조회
1:100:username:pcname:18:0
메시지 보내기
hello_world
1:100:username:pcname:32:hello_world
프로세스 처리
IpMessenger 클래스
ipmessenger.php<?php
class IpMessenger {
const IPMSG_GETLIST = '18';
const IPMSG_SENDMESSAGE = '32';
const STREAM_TIMEOUT = 3; //second
private $target_ip;
public function set_target_ip($ip) {
$this->target_ip = $ip;
}
private function connect() {
$fp = fsockopen('udp://'.$this->target_ip, 2425);
stream_set_timeout($fp, self::STREAM_TIMEOUT);
return $fp;
}
public function connect_check() {
$fp = self::connect();
fwrite($fp, "1:100:username:pcname:".self::IPMSG_GETLIST.":0");
$data_length = 1;
if(!fread($fp, $data_length)) {
return false;
}
return true;
}
public function send_message($message_utf8) {
$fp = self::connect();
$message_sjis = mb_convert_encoding($message_utf8,"sjis","utf-8");
fwrite($fp, "1:100:username:groupname:".self::IPMSG_SENDMESSAGE.":".$message_sjis);
}
}
사용법
<?php
class IpMessenger {
const IPMSG_GETLIST = '18';
const IPMSG_SENDMESSAGE = '32';
const STREAM_TIMEOUT = 3; //second
private $target_ip;
public function set_target_ip($ip) {
$this->target_ip = $ip;
}
private function connect() {
$fp = fsockopen('udp://'.$this->target_ip, 2425);
stream_set_timeout($fp, self::STREAM_TIMEOUT);
return $fp;
}
public function connect_check() {
$fp = self::connect();
fwrite($fp, "1:100:username:pcname:".self::IPMSG_GETLIST.":0");
$data_length = 1;
if(!fread($fp, $data_length)) {
return false;
}
return true;
}
public function send_message($message_utf8) {
$fp = self::connect();
$message_sjis = mb_convert_encoding($message_utf8,"sjis","utf-8");
fwrite($fp, "1:100:username:groupname:".self::IPMSG_SENDMESSAGE.":".$message_sjis);
}
}
<?php
require_once('ipmessenger.php');
$ipmsg = new IpMessenger();
$ipmsg->set_target_ip('192.168.100.68');
if($ipmsg->connect_check()) {
$ipmsg->set_target_ip('192.168.100.67');
$ipmsg->send_message("日本語でもOK");
} else {
$ipmsg->set_target_ip('192.168.100.67');
$ipmsg->send_message("ng");
}
실행
실행php main.php
php main.php
*192.168.100.68의 IPMessenger가 응답하지 않을 경우 ok를 192.168.100.67로 발송
Reference
이 문제에 관하여(IpMessenger에서 사활 감시와 메시지 발송 클라이언트를 만들었습니다 (php)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tukiyo3/items/9895541347104fecf4c9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)