လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> protocols နှင့် ports များကိုရှာဖွေရန် GetervbyName နှင့် GetProtobyname ကိုပေါင်းစပ်နည်း

protocols နှင့် ports များကိုရှာဖွေရန် GetervbyName နှင့် GetProtobyname ကိုပေါင်းစပ်နည်း

gitbox 2025-05-31

နိဒါန်းနိဒါန်း

gallervbyname ()

gallervbyname (string $ ဝန်ဆောင်မှု, string ကို $ protocol): int | false

ဤလုပ်ဆောင်ချက်သည် 0 န်ဆောင်မှုအမည်နှင့် protocol name မှတဆင့်သက်ဆိုင်ရာ port နံပါတ်ကိုမေးမြန်းရန်အသုံးပြုသည်။ ဥပမာအားဖြင့် HTTP 0 န်ဆောင်မှုများသည်ပုံမှန်အားဖြင့် TCP protocol ကို အသုံးပြု. port 80 ကိုနားထောင်သည်။

 $port = getservbyname('http', 'tcp');
echo $port; // ထုတ်လုပ်ခြင်း: 80

GetProtobynamalame ()

GetProtobynamy (string $ name): Int | false

ဤလုပ်ဆောင်ချက်သည် protocol နံပါတ်ကို protocol name (TCP "," UDP "ဟု (UDP") အရ protocol number ကိုရရှိရန်အသုံးပြုသည်။ ဥပမာအားဖြင့်:

 $proto = getprotobyname('tcp');
echo $proto; // ထုတ်လုပ်ခြင်း: 6

ပေါင်းစပ်အသုံးပြုမှုအခြေအနေများ

ကွန်ယက် 0 န်ဆောင်မှုတစ်ခုနှင့်ချိတ်ဆက်ရန်လိုအပ်သည့်အခါကျွန်ုပ်တို့သည် 0 န်ဆောင်မှု၏ port ၏ port နံပါတ်ကိုသာမက, ဥပမာ socket_create () နှင့် socket_connect ကို သုံး. ဆက်သွယ်မှုတစ်ခုတည်ဆောက်ရာတွင်,

အတူတူလုပ်ဆောင်ချက်နှစ်ခုကိုအတူတကွအသုံးပြုခြင်းကိုအောက်ပါအတိုင်းအသုံးပြုနိုင်သည်။

 $service = 'http';
$protocol = 'tcp';

$port = getservbyname($service, $protocol);
$proto = getprotobyname($protocol);

if ($port === false || $proto === false) {
    die("ဝန်ဆောင်မှုသို့မဟုတ်သဘောတူညီချက်ဖြေရှင်းနိုင်ခြင်းမရှိပါ\n");
}

echo "အစေခံ '{$service}' port ကိုသုံးပါ: {$port}\n";
echo "တည်ဆောက်မှု '{$protocol}' နံပါတ်က: {$proto}\n";

လက်တွေ့ကျသောလျှောက်လွှာဥပမာ - TCP socket တစ်ခုဖန်တီးပါ

TCP ဆက်သွယ်မှုတစ်ခုကိုဖန်တီးရန်ဤလုပ်ဆောင်ချက်နှစ်ခုကိုအသုံးပြုခြင်း၏ရိုးရှင်းသောဥပမာတစ်ခုမှာ -

 $service = 'http';
$protocol = 'tcp';
$host = 'gitbox.net';

$port = getservbyname($service, $protocol);
$proto = getprotobyname($protocol);

if ($port === false || $proto === false) {
    die("အစေခံ或တည်ဆောက်မှု无法识别\n");
}

$socket = socket_create(AF_INET, SOCK_STREAM, $proto);
if ($socket === false) {
    die("ဖန်တီး. မရပါ socket: " . socket_strerror(socket_last_error()) . "\n");
}

$result = socket_connect($socket, $host, $port);
if ($result === false) {
    die("ချိတ်ဆက်. မရပါ {$host}:{$port} - " . socket_strerror(socket_last_error($socket)) . "\n");
}

echo "အောင်မြင်စွာချိတ်ဆက် {$host}:{$port},使用တည်ဆောက်မှု编号 {$proto}\n";
socket_close($socket);

ဤဥပမာတွင် HTTP နှင့်သက်ဆိုင်သော port 80, GetProtobyGyname () ကို TCP protocol နံပါတ် 6 ကိုရရှိရန် GetervbyName () ကိုအသုံးပြုသည်။ ထို့နောက် GitpBox.net ၏ Port 80 သို့ TCP socket ကို ဖန်တီး. ချိတ်ဆက်ပါ။


မှတ်သားရန်အရာ

  1. ဤလုပ်ဆောင်ချက်နှစ်ခုသည်စနစ်၏ 0 န်ဆောင်မှုနှင့် / etc / etc / etc / protocols ကဲ့သို့သော / etc / etc / etc / protocols များပေါ်တွင်မှီခိုနေရသော / etc / etc / protocols များ ပေါ်တွင်မှီခိုနေရသည်။

  2. ဤလုပ်ငန်းဆောင်တာများကိုအသုံးပြုခြင်း၏ရလဒ်ကို Runtime အမှားများကိုရှောင်ရှားရန်မှားယွင်းစွာဆုံးဖြတ်သင့်သည်။

  3. ဤလုပ်ဆောင်ချက်များသည် GetervbyName နှင့် GetProtobyname အတွက်ရိုးရှင်းသောစည်းမျဉ်းစည်းကမ်းများသည် C ဘာသာစကားရှိ GetProtobyname အတွက်ရိုးရိုးရှင်းရှင်းစာတန်းသတ်မှတ်ချက်များဖြစ်သည်။