راه حل خطای Metin2 "Socket Bind Failed".
هنگامی که سرورهای Metin2 PVP را راه اندازی می کنید، کانال ها (CH) باز نمی شوند، ورودی های بازی بسته می مانند و فایل های syserr.txt در فهرست های اصلی حذف می شوند. "SocketBindBind: bind: آدرسی که قبلا استفاده می شود" یا "SYSTEM_CMD: socket_bind: شکست" اگر اخطارها را مشاهده کردید، سرور شما با یک درگیری پورت مواجه است. در این راهنما با علل و راه حل های دقیق این مشکل آشنا خواهید شد.
1. علت اصلی مشکل چیست؟
هر کانال بازی (Auth، CH1، CH2، Game99، و غیره) یک شماره پورت خاص (به عنوان مثال: 13000، 13001) در سیستم عامل FreeBSD را اشغال می کند تا اتصالات پخش کننده خارجی را بپذیرد. اگر فایل های بازی شما سعی کنند پورتی را که **قبلاً باز است و** در سیستم استفاده شده است باز کنند، خطای "Socket Bind Failed" می دهد و آن کانال خود به خود بسته می شود.
روش 2: بستن MySQL یا فرآیندهای بازی در پس زمینه
شایع ترین علت این خطا راه اندازی مجدد سرور به طور مکرر بدون خاموش شدن کامل آن است. دستور new start خطا می دهد زیرا فرآیندهای بازی قدیمی در حال اجرا در پس زمینه پورت ها را نمی بندند. برای راه حل:
- به ترمینال Putty متصل شوید و دستور زیر را تایپ کنید تا تمام فرآیندهای بازی فعال در پسزمینه فهرست شوند:
ps ax | grep game - اگر همچنان کانال های بازی در حال اجرا را در لیست می بینید، با یک دستور آنها را به طور کامل خاتمه دهید:
killall -9 gameیاkillall -9 db - پس از اطمینان از بسته شدن کامل فرآیندها، دوباره بازی را شروع کنید.
روش 3: رفع تضاد پورت در فایل های CONFIG
اگر این خطا را در اولین شروع حتی پس از راهاندازی مجدد سرور دریافت کنید، شماره پورتهای موجود در فایلهای شما با یکدیگر تضاد دارند:
- با Filezilla به سرور خود متصل شوید
/usr/game/cores/به دایرکتوری بروید - به ترتیب
auth،channel1،channel2وgame99در پوشه ها CONFIG فایل ها را یکی یکی باز کنید. - در هر فایل بندر مقدار را بررسی کنید. به عنوان مثال؛ اگر پورت Auth 13000 باشد، درگاه Channel1 باید 13010 باشد، درگاه Channel2 باید 13020 باشد.
- مطمئن شوید که **شماره پورت یکسان** در فایل CONFIG در دو پوشه مختلف نوشته نشده باشد. اگر یکسان است، یک شماره پورت منحصر به فرد به آن بدهید و فایل را ذخیره کنید.
روش 4: تشخیص برنامه با استفاده از محدودیت و پورت متناقض
به غیر از فایل های بازی شما، یک اسکریپت خارجی، پنل وب یا نرم افزار حفاظتی (Guard) که روی سرور نصب کرده اید ممکن است پورت بازی شما را اشغال کند. برای اینکه بفهمید کدام برنامه از پورت استفاده می کند:
- پورت ها و سرویس های فعال را با اجرای دستور زیر در ترمینال Putty فهرست کنید:
sockstat -4 -l - در لیستی که ظاهر می شود، شماره پورت باز نشده بازی خود را پیدا کنید و نام برنامه (شناسه فرآیند / نام) را در سمت چپ بررسی کنید. می توانید با توقف سرویس خارجی متضاد مشکل را برطرف کنید.
این مقاله به طور ویژه برای PvPServer تهیه شده است.