လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Socket_Accept () အများပြည်သူကွန်ယက်နှင့် NAT အခြေအနေများတွင်ဆက်သွယ်မှုကန့်သတ်ချက်များ

Socket_Accept () အများပြည်သူကွန်ယက်နှင့် NAT အခြေအနေများတွင်ဆက်သွယ်မှုကန့်သတ်ချက်များ

M66 2025-06-05

PHP Socket Programming, Socket_acception () တွင် client ကနေဆက်သွယ်မှုတောင်းဆိုမှုများကိုလက်ခံသည့်အဓိကလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ဤလုပ်ဆောင်မှုကို socket_create () , socket_bind () နှင့် socket_listen () နှင့် socket_listen () နှင့် socket_listen () နှင့် socket_listen () နှင့် socket_listen () နှင့် socket_listen) နှင့်အသုံးပြုသည်။ သို့သော်ဖြန့်ကျက်နေသောပတ်ဝန်းကျင်သည်ဒေသခံကွန်ယက်သို့မဟုတ် NATION NETATE ဘာသာရပ် (ကွန်ယက်လိပ်စာဘာသာပြန်ခြင်း) ပတ် 0 န်းကျင်သို့တိုးချဲ့ခြင်းတွင်အပြုအမူနှင့်ဆက်သွယ်မှုယန္တရား () သည်အချို့သောကန့်သတ်ချက်များနှင့်သွဇာလွှမ်းမိုးမှုရှိနိုင်သည်။ ဤဆောင်းပါးသည်ကွန်ရက်ပတ် 0 န်းကျင်အမျိုးအစားနှစ်မျိုးတွင် Socket_acception () တွင် Socket_acception () ကို အသုံးပြု. ကြုံတွေ့ရနိုင်သည့်ပြ problems နာများနှင့်ဖြေရှင်းနည်းများကိုအသေးစိတ်လေ့လာလိမ့်မည်။

1 ။ socket_acception ၏အခြေခံအသုံးပြုမှုကိုပြန်လည်သုံးသပ်ခြင်း ()

 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, '0.0.0.0', 8080);
socket_listen($socket);

while (true) {
    $clientSocket = socket_accept($socket);
    if ($clientSocket !== false) {
        socket_write($clientSocket, "Welcome to m66.net\n");
        socket_close($clientSocket);
    }
}

ဤကုဒ်သည်အခြေခံ TCP server ကိုတည်ဆောက်သည်။ Port 8080 သို့ Listens သည် 0 န်ဆောင်မှုခံယူသူများကိုလက်ခံပြီး 0 န်ဆောင်မှုခံယူသူများကိုလက်ခံသည်။ ဤအရာသည်ကောင်းမွန်စွာလုပ်ဆောင်နေစဉ်အတွင်းအများပြည်သူကွန်ယက်တစ်ခုသို့နေရာချထားခြင်းသို့မဟုတ်နတ်ပတ်ဝန်းကျင်ကိုဖြတ်သန်းသွားသောအခါ connection ပျက်ကွက်ပြ issues နာများကိုသင်တွေ့ကြုံခံစားနိုင်သည်။

2 ။ အများပြည်သူကွန်ယက်ပတ်ဝန်းကျင်တွင်ဆက်သွယ်မှုယန္တရား

1 ။ ဆာဗာကိုအများပြည်သူနှင့် 0.0.0.0 သို့ချည်နှောင်ထားရမည်

အများပြည်သူသုံးကွန်ယက်များကိုနေရာချထားသည့်အခါ socket_bind () ကို အများပြည်သူကွန်ယက် IP သို့မဟုတ် 0.0.0.0 (0.0.0.0.0) သို့ရောက်ရှိရမည်။ ဥပမာအားဖြင့်:

 socket_bind($socket, '0.0.0.0', 8080); // မှန်ကန်သော
socket_bind($socket, '127.0.0.1', 8080); // ဒေသခံစက်ဖြင့်သာဝင်ရောက်ခွင့်,အများဆိုင်ကွန်ယက်ဆက်သွယ်မှုမအောင်မြင်ပါ

အကယ်. ဒေသခံ loopback address သည် 127.0.0.1 ကဲ့သို့သော 127.0.0.1 ကဲ့သို့ပင်ပြင်ပအသုံးပြုသူများသည် http://m66.netet -8080 မှတစ်ဆင့်ရယူနိုင်မည်မဟုတ်ပါ။

2 ။ firewall settings ကို

ပုံမှန်အားဖြင့် 80 နှင့် 443 ကဲ့သို့သောအသုံးများသော port များ မှလွဲ. Cloud Servers အတော်များများသည်အဝင်ဆက်သွယ်မှုများကိုပိတ်ထားသည်။ ဆာဗာ၏ firewall (Iptables) firewall (Iptables) ကဲ့သို့သော socient_bind (ဥပမာ - 8080) တွင်သတ်မှတ်ထားသော port ကိုဖွင့်လှစ်ထားသည်။

3 ။ ISP နှင့်အော်ပရေတာကန့်သတ်ချက်များ

အချို့သောအခြေအနေများတွင် ISP သည်ပုံမှန်မဟုတ်သော ports များကိုပိတ်ဆို့ခြင်းသို့မဟုတ်အတွင်းဆက်သွယ်မှုများကိုပိတ်ဆို့နိုင်သည်။ ယခုအချိန်တွင် Socket_Accept () သည် code မှန်ကန်မှုရှိပါကဆက်သွယ်မှုတောင်းဆိုမှုကိုမရနိုင်ပါ။

3 ။ နတ်ပတ်ဝန်းကျင်ရှိဆက်သွယ်မှုယန္တရား

NAT ကွန်ယက်များကိုအိမ် routers များသို့မဟုတ် cloud platform များရှိပုဂ္ဂလိကကွန်ယက်များ (ဥပမာ docker bridge network network network) တွင်တွေ့ရသည်။ ဤကိစ္စတွင်ဆာဗာသည်ပုဂ္ဂလိကလုပ်ဖော်ကိုင်ဖက်များ (ဥပမာ - 192.168.0.x, 10.xxx) ကိုသုံးနိုင်သည်။

1 ။ ဆိပ်ကမ်း forwarding

Dat-The-Nat Server ကိုပြင်ပတွင်လက်လှမ်းမီစေရန် Port Mapping ကို router သို့မဟုတ် gateway device တွင်သတ်မှတ်ရမည်။ ဥပမာအားဖြင့်, မြေပုံဆိပ်ကမ်း 8080 Port 8080 ကို intranet device တစ်ခု၏ port 8080 သို့သွားရန်။

ဤ configuration တွင် access လုပ်ရန်ပြင်ပတောင်းဆိုမှုများကို http://m66.netet: 8080 ကို PHP server သို့ပေးပို့နိုင်သည်

2 ။ upnp ၏ကန့်သတ်

အချို့သော developer တချို့က port forwarding ကိုအလိုအလျောက်သတ်မှတ်ရန် UPNP ကိုအသုံးပြုရန်ကြိုးစားသော်လည်း၎င်းသည်များသောအားဖြင့်စိတ်မချရသောကြောင့်, ထို့ကြောင့် router ကိုကိုယ်တိုင်ပြုပြင်ရန်သို့မဟုတ်အများသုံးကွန်ယက် IP ဖြင့် host ကိုအသုံးပြုရန်အကြံပြုသည်။

3 ။ intranet ထိုးဖောက်မှု tool ကို

အကယ်. port မြေပုံသည်မဖြစ်နိုင်ပါကဒေသခံ 0 န်ဆောင်မှုများကို intranet ထိုးဖောက် 0 င်ရောက်မှုကိရိယာများ (ဥပမာ, NGOG ကဲ့သို့) အကူအညီဖြင့်အများပြည်သူကွန်ယက်နှင့်ထိတွေ့နိုင်သည်။ ဤကိရိယာအမျိုးအစားသည်အများသုံးကွန်ယက်ပေါ်တယ် (http: //mp://m66.net : 7000) ကိုဖန်တီးပြီး intranet 0 န်ဆောင်မှုနှင့်ဆက်သွယ်မှုကိုရှေ့သို့တိုးပွင့ ်. ရှေ့သို့ချိတ်ဆက်ခြင်း () ကို သွယ်ဝိုက်ထောက်ခံသည်။

 # frps.ini configuration ကို
[common]
bind_port = 7000

[phpserver]
type = tcp
local_ip = 192.168.1.10
local_port = 8080
remote_port = 7000

အထက်ဖော်ပြပါဖွဲ့စည်းမှုမှတစ်ဆင့် M66.net သို့ပြင်ပလက်လှမ်းမီမှုနှင့်အတူပြင်ပဝင်ရောက်ခြင်းသည် Intranet ၏ Php Socket Service ကိုရယူရန်နှင့်ညီမျှသည်။

4 ။ ကန့်သတ်ချက်များနှင့်ကြိုတင်ကာကွယ်မှုများ

  1. ဆက်သွယ်မှုအချိန်ကုန်ပြ problem နာ - နတ်ဝိဇ္ဇာအတတ်အားဖြုတ်ခြင်းမရှိသောကြောင့် DESTECTIOND_ACCEL_ACL_ATT_ATT_OTT_OST_OST_OST_ENT_OPTIONE () ကိုပျက်ကွက်ခြင်းကြောင့်ဆက်သွယ်မှုအချိန်ကုန်ခံပြီးဆက်သွယ်မှု

  2. Multi-client connection support : ပုံမှန်ကွင်းဆက်ဖွဲ့စည်းပုံသည် Serial Processing Connection ဖြစ်ပြီး Peget (/ stream_) / stream_ seen_select () အပေါ်အခြေခံပြီး multi-process သို့မဟုတ် model ကိုအသုံးပြုရန်အကြံပြုသည်။

  3. အများပြည်သူသုံးကွန်ယက်များဖြင့်ဖော်ထုတ်ထားသည့်လုံခြုံရေးပြ issues နာများ - လူထုကွန်ယက် IP သို့မဟုတ် NAT ထိုးဖောက် 0 င်ရောက်ခြင်းကိုအသုံးပြုပြီးနောက်အလွဲသုံးစားမှုကိုရှောင်ရှားရန် Access authent production ယန္တရားကိုထည့်သွင်းသင့်သည်။ ဝေးလံခေါင်သီသော IP လိပ်စာသည် socket_accept ပြီးနောက်ခွင့်ပြုထားသောစာရင်းတွင်ရှိမရှိစစ်ဆေးနိုင်သည်။

  4. IPv6 Support : Socket_create () သည် IPv6 sockets များကိုဖန်တီးရန် AF_INT6 ကို သုံးနိုင်သည်။

5 ။ အကျဉ်းချုပ်

Socket_Accept ကို အသုံးပြု . Socket_Accept ကို အသုံးပြုရန်သော့ချက်မှာ Public Network Readity တွင် IP နှင့် port binding တို့မှန်ကန်ကြောင်းသေချာစေရန်အတွက် Firewall ကိုထုတ်လွှတ်ခြင်းနှင့်အော်ပရေတာကိုပိတ်ဆို့ခြင်းမရှိပါ။ Nat ပတ် 0 န်းကျင်တွင်ပတ် 0 န်းကျင်တွင်ရှိနေစဉ် 0 န်ဆောင်မှုကို Port Mapping သို့မဟုတ် Intranet ထိုးဖောက်မှုကိရိယာများဖြင့်ရောက်ရှိရန်လိုအပ်သည်။ ဤကွန်ယက်ပတ်ဝန်းကျင်၏နောက်ကွယ်ရှိဆက်သွယ်မှုယန္တရားကိုနားလည်ခြင်းအားဖြင့်သာကျွန်ုပ်တို့သည်လက်တွေ့ကျသောဖြန့်ကျက်မှုအခြေအနေများတွင်ဝင်ရောက်နိုင်သည့်ကြံ့ခိုင်သော socket service တစ်ခုတည်ဆောက်နိုင်ပါသလား။