No. 2951 | Re: UDP 포트에 의한 수신 IP 주소 및 port 를 알 수 있는 방법이 있을 까요? | 2023-12-11 | ||
---|---|---|---|---|
안녕하세요. 솔내시스템 기술지원팀입니다. UDP 수신시 상대방 IP 정보와 port를 알 수 있는 방법은 pid_recvfrom 함수를 사용하면 됩니다. 함수 인자는 아래와 같습니다. * $pid - the network device’s PID * &$buf - the destination buffer will be saved to * $len - the maximum number of bytes to receive It receives up to the size of the $buf if this field is omitted (integer: 8 bytes, string: MAX_STRING_LEN) * $flags - This field should be 0 * &$addr - the peer host’s IP address * &$port - the peer host’s UDP port number 아래 샘플 코드 참고하세요. 감사합니다. $Port = 161; $community = "public"; // 변수 추가 $rbuf = ""; $dstaddr = ""; $dstport = 0; $pid = pid_open("/mmap/udp0"); // 0번 UDP 열기 pid_bind($pid, "", $Port); // 바인딩 while(1) // 무한 루프 { $srcaddr = pid_ioctl($pid, "get srcaddr"); // 송신IP 확인 $srcport = pid_ioctl($pid, "get srcport"); // 송신 포트 확인 $rxlen = pid_ioctl($pid, "get rxlen"); // 수신 데이터 크기 확인 //$dstaddr = pid_ioctl($pid, "get dstaddr"); // 수신IP 확인 //$dstport = pid_ioctl($pid, "get dstport"); // 수신 포트 확인 if($rxlen > 0) { // 데이터 수신 pid_recvfrom($pid, $rbuf, $rxlen, 0, $dstaddr, $dstport); printf("srcaddr = $srcaddr / srcport = $srcport / rxlen = $rxlen / dsaddr = $dstaddr / dsport = $dstport "); // 루프백 //$slen = pid_sendto($pid, $rbuf, $rxlen, 0, $dstaddr, $dstport); // 데이터 송신 } usleep(100000); } pid_close($pid); ?> > 이종범 wrote: > ------------------------------------ > $Port = 161; $community = "public"; $pid = pid_open("/mmap/udp0"); // 0번 UDP 열기 pid_bind($pid, "", $Port); // 바인딩 while(1) // 무한 루프 { $srcaddr = pid_ioctl($pid, "get srcaddr"); // 송신IP 확인 $srcport = pid_ioctl($pid, "get srcport"); // 송신 포트 확인 $rxlen = pid_ioctl($pid, "get rxlen"); // 수신 데이터 크기 확인 $dstaddr = pid_ioctl($pid, "get dstaddr"); // 수신IP 확인 $dstport = pid_ioctl($pid, "get dstport"); // 수신 포트 확인 if($rxlen > 0) { printf("srcaddr = $srcaddr / srcport = $srcport / rxlen = $rxlen / dsaddr = $dsaddr / dsport = $dsport "); } usleep(100000); } pid_close($pid); ?> ==> 이때 결과는 제품(PHPOC 블랙 P4S-341)의 IP를 192.168.0.110 으로 설정시 srcaddr = 192.168.0.110 / srcport = 161 / rxlen = 46 / dstaddr = 0.0.0.0 / dstport = 0 이렇게 나오게 됩니다. 이때 수신 된 IP (dstaddr = 0.0.0.0) , port (dstport =0 ) 이 나오게 되는데 pid_ioctl($pid, "set dstaddr 10.1.0.2"); // 통신 상대방 IP주소 설정 pid_ioctl($pid, "set dstport 1470"); // 통신 상대방 포트번호 설정 를 설정 하지 않을 경우 수신 된 IP 및 Port 를 확인 할 수 있는 방법이 있을 까요? |
글쓴이 | 솔내시스템(주) | 업체명 |
NO | Subject | Name | Date | Read |
---|---|---|---|---|
2950 | UDP 포트에 의한 수신 IP 주소 및 port 를 알 수 있는 방법이 있을 까요? | 이종범 | 2023-12-10 | 304 |
2951 | Re: UDP 포트에 의한 수신 IP 주소 및 port 를 알 수 있는 방법이 있을 까요? | 솔내시스템(주) | 2023-12-11 | 236 |
|
|||