Indy ၏ သုည UDP ASSOCIATE လိပ်စာသည် datagram ၏ ပစ်မှတ် မဟုတ်ပါ
ကလိုင်းယင့် ချိတ်ဆက်မှု လိပ်စာ၊ ပြန်ပေးသော SOCKS relay နှင့် UDP packet တစ်ခုစီတွင် encode လုပ်ထားသော ပစ်မှတ်ကို ခွဲခြားပါ။
Indy UDP ASSOCIATE တောင်းဆိုချက်တွင် 0.0.0.0:0 သည် ရည်ရွယ်ချက်ရှိရှိ ဖြစ်နိုင်ပါသည်။ ထိုတောင်းဆိုချက်သည် ကလိုင်းယင့်ဘက်မှ မျှော်လင့်ထားသော UDP အဆုံးမှတ်ကို ဖော်ပြပြီး RFC 1928 သည် မသိရှိပါက သုညများကို ခွင့်ပြုသည်။ ၎င်းသည် နောက်ဆုံး ဝန်ဆောင်မှုကို ရွေးချယ်ခြင်း မဟုတ်ပါ။
အဖြေ၏ BND.ADDR/BND.PORT သည် ကလိုင်းယင့် ထုပ်ပိုးထားသော datagram များ ပို့သည့် relay ကို ညွှန်ပြသည်။
TCP control: client → SOCKS5 proxy → UDP association reply
UDP payload: client → returned relay address → target serviceIndy တွင် TIdUDPClient.Connect သည် ထင်ရှားသော proxy ၏ OpenUDP ကို ခေါ်သည်။ TIdSocksInfo သည် သုည ချိတ်ဆက်မှု အကွက်များကို ပေးသည်။ နောက်ပိုင်း SendBuffer သည် လိုချင်သော ဝန်ဆောင်မှုကို SendToUDP သို့ ပေးပို့ပြီး ၎င်းသည် အပလီကေးရှင်း ဒေတာမတိုင်မီ SOCKS UDP ဦးတည်ချက် ခေါင်းစီးကို တည်ဆောက်သည်။
ချိတ်ဆက်မှု အောင်မြင်သော်လည်း ဒေတာ မပေါက်ပါက ပြန်ပေးသော relay၊ encode လုပ်ထားသော ဦးတည်ချက်နှင့် UDP အဖြေ လမ်းကြောင်းကို စစ်ဆေးပါ။ NAT/firewall များသည် TCP ဖလှယ်မှုကို ခွင့်ပြုပြီး UDP ကို ပိတ်ဆို့နိုင်သည်။
TCP ထိန်းချုပ်မှု ချိတ်ဆက်မှုကို ဖွင့်ထားပါ။ ပိတ်လိုက်ပါက ချိတ်ဆက်မှု ပြီးဆုံးသည်။ SOCKS4/4a တွင် ဤလုပ်ဆောင်ချက် မရှိပြီး SOCKS5 အမည်တစ်ခုတည်းဖြင့် ဆာဗာသည် UDP ကို ပံ့ပိုးသည်ဟု အာမမခံနိုင်ပါ။