Rob*_*nes 4 sockets perl network-programming
我正在使用Perl检查各种套接字选项的存在和默认值.
#!/usr/bin/perl -w
use strict;
use Socket;
if (defined(SO_BROADCAST)) {
print("SO_BROADCAST defined\n");
}
if (defined(SO_REUSEPORT)) {
print("SO_REUSEPORT defined\n");
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时输出:
SO_BROADCAST defined
Your vendor has not defined Socket macro SO_REUSEPORT, used at ./checkopts.pl line 9
有没有办法在输出中不生成警告的情况下执行此操作?
该消息来自AUTOLOADSocket.pm.当它找到一个不受支持的常量时,它就是croak.你可以用eval来捕获它:
use Socket;
if( defined eval { SO_REUSEPORT } ) {
...;
}
Run Code Online (Sandbox Code Playgroud)