پروتکل FD Control
این قابلیت عمدتاً برای توسعهٔ اپلیکیشنهای پروکسی اندروید به کار میرود.
کلاینت Hysteria از ارسال توصیفگر فایل (fd) اتصالهای خروجی QUIC به هر فرآیندی که روی fdControlUnixSocket گوش میدهد پشتیبانی میکند.
توجه: fdControlUnixSocket در حال حاضر فقط برای اتصالهای خروجی QUIC مؤثر است. کلاینتهای شخصثالث اندرویدی که از این قابلیت استفاده میکنند باید درخواستهای DNS اضافی برای دامنهٔ سرور Hysteria را خودشان مدیریت کنند، یا مطمئن شوند گزینهٔ server در پیکربندی کلاینت Hysteria یک آدرس IP است، نه دامنه.
نقشها
- سرور: فرآیند شخصثالثی که روی
fdControlUnixSocketگوش میدهد، مثلاً فرآیند اصلی یک اپ اندروید. - کلاینت: فرآیند کلاینت Hysteria.
پیادهسازی سمت سرور
- به یک Unix Socket مبتنی بر مسیر گوش دهید که باید از نوع
SOCK_STREAMباشد. - با
accept(2)اتصالهایی را که کلاینت آغاز کرده بپذیرید. - یک
fdتکی که کلاینت باrecvmsg(2)فرستاده دریافت کنید. fdدریافتشده در مرحلهٔ ۳ را پردازش کنید (مثلاً با فراخوانیVpnService.protect()) و سپسfdرا ببندید.- با یک بایت به کلاینت پاسخ دهید تا به او اعلام شود ادامه دهد. در شرایط عادی توصیه میشود با
'\x01'پاسخ دهید؛ مقادیر دیگر در حال حاضر تعریفنشدهاند. - اتصال برقرارشده در مرحلهٔ ۲ را ببندید — هر اتصال فقط یک
fdرا پردازش میکند.