.TH "socat" "1" "" "" "" .PP .SH "نام (NAME)" socat \- رله چندمنظوره (SOcket CAT) .PP .SH "خلاصه دستور (SYNOPSIS)" \f(CWsocat [options]
\fP .br \f(CWsocat \-V\fP .br \f(CWsocat \-h[h[h]] | \-?[?[?]]\fP .br \f(CWfilan\fP .br \f(CWprocan\fP .PP .SH "توضیحات (DESCRIPTION)" .PP ابزار \fBSocat\fP برنامه‌ای مبتنی بر خط فرمان است که دو جریان بایت (byte stream) دوطرفه برقرار کرده و داده‌ها را میان آن‌ها منتقل می‌کند\&. از آنجا که این جریان‌ها را می‌توان از مجموعه گسترده‌ای از انواع مختلف مبدأها و مقصدهای داده (رجوع به انواع نشانی‌ها) ایجاد کرد، و به دلیل این‌که می‌توان گزینه‌های نشانی فراوانی را بر روی این جریان‌ها اعمال نمود، socat برای اهداف بسیار گوناگونی قابل استفاده است\&. .PP ابزار \fBFilan\fP برنامه‌ای است که اطلاعات مربوط به توصیف‌گرهای فایل فعال خود را در خروجی استاندارد (stdout) چاپ می‌کند\&. این ابزار برای اشکال‌زدایی \fBsocat\fP نوشته شده است، اما برای مقاصد دیگر نیز ممکن است مفید باشد\&. برای یافتن اطلاعات بیشتر از گزینه \-h استفاده کنید\&. .PP ابزار \fBProcan\fP برنامه‌ای است که اطلاعات مربوط به پارامترهای پردازش را در خروجی استاندارد چاپ می‌کند\&. این ابزار به منظور درک بهتر برخی از ویژگی‌های پردازش‌های UNIX و اشکال‌زدایی \fBsocat\fP نوشته شده است، اما ممکن است برای اهداف دیگر نیز مفید واقع شود\&. .PP چرخه حیات یک نمونه از \fBsocat\fP معمولاً از چهار فاز تشکیل می‌شود\&. .PP در فاز \fIinit\fP (راه‌اندازی)، گزینه‌های خط فرمان پردازش شده و ثبت گزارش‌ها (logging) مقداردهی اولیه می‌شود\&. .PP در طول فاز \fIopen\fP (باز کردن)، \fBsocat\fP ابتدا نشانی نخست و سپس نشانی دوم را باز می‌کند\&. این مراحل معمولاً مسدودکننده (blocking) هستند؛ از این رو، به‌ویژه برای انواع نشانی‌های پیچیده نظیر socks، درخواست‌های اتصال یا گفتگوهای احراز هویت باید پیش از آغاز مرحله بعد تکمیل شوند\&. .PP در فاز \fItransfer\fP (انتقال)، \fBsocat\fP توصیف‌گرهای فایل خواندن و نوشتن هر دو جریان را از طریق \f(CWselect()\fP زیر نظر می‌گیرد؛ هنگامی که داده در یک سمت آماده باشد \fIو\fP بتوان آن را در سمت دیگر نوشت، socat آن را می‌خواند، در صورت لزوم تبدیل‌های نویسه خط جدید (newline) را انجام می‌دهد، داده را در توصیف‌گر فایل نوشتن جریان دیگر می‌نویسد، و سپس به انتظار برای داده‌های بیشتر در هر دو جهت ادامه می‌دهد\&. .PP هنگامی که یکی از جریان‌ها در عمل به EOF برسد، فاز \fIclosing\fP (بستن) آغاز می‌شود\&. \fBSocat\fP وضعیت EOF را به جریان دیگر منتقل می‌کند، یعنی تلاش می‌کند تنها جریان نوشتن آن را متوقف (shutdown) کند تا به آن فرصتی برای خاتمه تمیز (graceful) داده شود\&. برای مدتی مشخص، \fBsocat\fP به انتقال داده در جهت دیگر ادامه می‌دهد، اما پس از آن تمام کانال‌های باقی‌مانده را بسته و خاتمه می‌یابد\&. .PP .SH "گزینه‌ها (OPTIONS)" .PP برنامه \fBSocat\fP گزینه‌هایی در خط فرمان فراهم می‌کند که رفتار برنامه را تغییر می‌دهند\&. این گزینه‌ها ارتباطی با گزینه‌های نشانی (address options) ندارند که به عنوان بخشی از مشخصات نشانی به کار می‌روند\&. .PP .IP "\fB\f(CW\-V\fP\fP" اطلاعات نسخه و قابلیت‌های دردسترس را در stdout چاپ کرده و خارج می‌شود\&. .IP "\fB\f(CW\-h | \-?\fP\fP" متن راهنمایی را شامل توضیح گزینه‌های خط فرمان و انواع نشانی‌های دردسترس در stdout چاپ کرده و خارج می‌شود\&. .IP "\fB\f(CW\-hh | \-??\fP\fP" مشابه \-h، به همراه فهرستی از نام‌های کوتاه تمام گزینه‌های نشانی دردسترس\&. برخی گزینه‌ها وابسته به پلتفرم هستند، بنابراین این خروجی برای بررسی پیاده‌سازی مربوطه مفید است\&. .IP "\fB\f(CW\-hhh | \-???\fP\fP" مشابه \-hh، به همراه فهرستی از تمامی نام‌های گزینه‌های نشانی دردسترس\&. .IP "\fB\f(CW\-d\fP\fP" بدون این گزینه، تنها پیام‌های مهلک (fatal)، خطای (error) و هشدار (warning) چاپ می‌شوند؛ با اعمال این گزینه، پیام‌های توجه (notice) نیز چاپ خواهند شد\&. برای اطلاعات بیشتر به بخش خطاها (DIAGNOSTICS) مراجعه کنید\&. .IP "\fB\f(CW\-d0\fP\fP" با این گزینه، تنها پیام‌های مهلک و خطا چاپ می‌شوند؛ این گزینه رفتار \fBsocat\fP را تا نسخه 1\&.7\&.4 بازمی‌گرداند\&. .IP "\fB\f(CW\-d \-d | \-dd | \-d2\fP\fP" پیام‌های مهلک، خطا، هشدار و توجه را چاپ می‌کند\&. .IP "\fB\f(CW\-d \-d \-d | \-ddd | \-d3\fP\fP" پیام‌های مهلک، خطا، هشدار، توجه و اطلاع‌رسانی (info) را چاپ می‌کند\&. .IP "\fB\f(CW\-d \-d \-d \-d | \-dddd | \-d4\fP\fP" پیام‌های مهلک، خطا، هشدار، توجه، اطلاع‌رسانی و اشکال‌زدایی (debug) را چاپ می‌کند\&. .IP "\fB\f(CW\-D\fP\fP" پیش از آغاز فاز انتقال، اطلاعات مربوط به توصیف‌گرهای فایل را ثبت می‌کند\&. .IP "\fB\f(CW\-\-experimental\fP\fP" قابلیت‌های جدیدی که به خوبی آزمایش نشده‌اند یا در آینده دستخوش تغییر می‌شوند، باید صراحتاً با این گزینه فعال گردند\&. .IP "\fB\f(CW\-ly[]\fP\fP" پیام‌ها را به‌جای stderr به syslog می‌فرستد؛ سطح حساسیت آن با گزینه \-d تعیین می‌شود\&. با مقدار اختیاری ، نوع syslog قابل انتخاب است که به‌طور پیش‌فرض \(dq\&daemon\(dq می‌باشد\&. کتابخانه‌های شخص ثالث ممکن است از این گزینه تبعیت نکنند\&. .IP "\fB\f(CW\-lf\fP\fP\f(CW \fP" پیام‌ها را به‌جای stderr در [نام فایل] می‌نویسد\&. برخی کتابخانه‌های شخص ثالث، به‌ویژه libwrap، ممکن است از این گزینه تبعیت نکنند\&. .IP "\fB\f(CW\-ls\fP\fP" پیام‌ها را در stderr می‌نویسد (این حالت پیش‌فرض است)\&. برخی کتابخانه‌های شخص ثالث ممکن است از این گزینه تبعیت نکنند، به‌ویژه به نظر می‌رسد libwrap تنها در syslog ثبت می‌کند\&. .IP "\fB\f(CW\-lp\fP\fP\f(CW\fP" نام برنامه‌ای را که در پیام‌های خطا چاپ می‌شود و برای ساخت نام‌های متغیرهای محیطی به کار می‌رود، تغییر می‌دهد\&. .IP "\fB\f(CW\-lu\fP\fP" دقت برچسب زمان (timestamp) پیام‌های خطا را به میکروثانیه افزایش می‌دهد\&. هنگام ارسال به syslog کار نمی‌کند\&. .IP "\fB\f(CW\-lm[]\fP\fP" حالت گزارش‌گیری ترکیبی\&. هنگام راه‌اندازی پیام‌ها در stderr چاپ می‌شوند؛ هنگامی که \fBsocat\fP حلقه فاز انتقال یا حالت دیمن را آغاز می‌کند (یعنی پس از باز کردن همه جریان‌ها و پیش از آغاز انتقال داده، یا با سوکت‌های شنونده به همراه گزینه fork، پیش از نخستین فراخوانی accept)، گزارش‌گیری را به syslog تغییر می‌دهد\&. با مشخص کردن اختیاری، نوع syslog را می‌توان تعیین کرد که به‌طور پیش‌فرض \(dq\&daemon\(dq است\&. .IP "\fB\f(CW\-lh\fP\fP" نام میزبان (hostname) را به پیام‌های گزارش اضافه می‌کند\&. از مقدار متغیر محیطی HOSTNAME یا در صورت تنظیم نبودن آن، از مقدار دریافت‌شده از \f(CWuname()\fP استفاده می‌کند\&. .IP "\fB\f(CW\-v\fP\fP" داده‌های منتقل‌شده را نه‌تنها به جریان‌های مقصد آن‌ها، بلکه در stderr نیز می‌نویسد\&. قالب خروجی به‌صورت متن با اعمال برخی تبدیل‌ها برای خوانایی بهتر است و پیشوند \(dq\&> \(dq یا \(dq\&< \(dq جهت جریان داده را مشخص می‌کند\&. .IP "\fB\f(CW\-x\fP\fP" داده‌های منتقل‌شده را نه‌تنها به جریان‌های مقصد، بلکه در stderr نیز می‌نویسد\&. قالب خروجی به‌صورت هگزادسیمال همراه با پیشوند \(dq\&> \(dq یا \(dq\&< \(dq برای نمایش جهت جریان است\&. می‌تواند با \f(CW\-v\fP ترکیب شود\&. .IP "\fB\f(CW\-r \fP\fP" داده‌های خام (باینری) منتقل‌شده از نشانی سمت چپ به سمت راست را در فایل مشخص‌شده تخلیه (dump) می‌کند\&. نام فایل می‌تواند شامل ارجاعاتی به متغیرهای محیطی و \f(CW$$\fP (شناسه فرآیند یا pid)، \f(CW$PROGNAME\fP (گزینه \-lp را ببینید)، \f(CW$TIMESTAMP\fP (با قالب %Y%m%dT%H%M%S)، و \f(CWMICROS\fP (میکروثانیه‌های زمان جاری) باشد\&. بدیهی است که این ارجاعات باید در برابر گسترش توسط شل محافظت شوند\&. .IP "\fB\f(CW\-R \fP\fP" داده‌های خام (باینری) منتقل‌شده از نشانی سمت راست به سمت چپ را در فایل مشخص‌شده تخلیه می‌کند\&. برای سفارشی‌سازی نام فایل به گزینه \-r مراجعه کنید\&. .IP "\fB\f(CW\-b\fP\fP\f(CW\fP" اندازه بلوک انتقال داده [size_t] را تعیین می‌کند\&. در هر مرحله حداکثر بایت منتقل می‌شود\&. مقدار پیش‌فرض 8192 بایت است\&. .IP "\fB\f(CW\-s\fP\fP" به‌طور پیش‌فرض، هنگامی که خطایی رخ می‌دهد، \fBsocat\fP خاتمه می‌یابد تا از اجرای برنامه در زمانی که برخی گزینه‌ها قابل اعمال نبوده‌اند، جلوگیری شود\&. با این گزینه، \fBsocat\fP در مواجهه با خطاها آسان‌گیرانه عمل کرده و تلاش می‌کند به کار خود ادامه دهد\&. حتی با وجود این گزینه، socat در مواجهه با خطاهای مهلک خارج خواهد شد و در صورت شکست بررسی‌های امنیتی، تلاش‌های اتصال را لغو می‌کند\&. .IP "\fB\f(CW\-S\fP\fP\f(CW\fP" مجموعه سیگنال‌هایی را تغییر می‌دهد که توسط \fBsocat\fP صرفاً جهت ثبت یک پیام گزارش دریافت می‌شوند\&. به دام انداختن این سیگنال‌ها برای درج اطلاعات مربوط به سیگنال در گزارش‌های \fBsocat\fP مفید است، اما از تولید core dump یا سایر کنش‌های پیش‌فرض جلوگیری می‌کند\&. مجموعه پیش‌فرض این سیگنال‌ها عبارت است از SIGHUP، SIGINT، SIGQUIT، SIGILL، SIGABRT، SIGBUS، SIGFPE، SIGSEGV و SIGTERM؛ این مجموعه (0x89de در لینوکس) را با یک نگاشت بیتی جایگزین کنید (برای نمونه، SIGFPE دارای مقدار 8 و بیت آن 0x0080 است)\&. .br نکته: سیگنال‌های SIGHUP، SIGINT، SIGQUIT، SIGUSR1، SIGPIPE، SIGALRM، SIGTERM و SIGCHLD ممکن است در هر حالتی به‌طور ویژه مدیریت شوند\&. .IP "\fB\f(CW\-t\fP\fP\f(CW\fP" هنگامی که یک کانال به EOF برسد (که از طریق گزینه ignoreeof نادیده گرفته نشده باشد)، بخش نوشتن کانال دیگر متوقف (shutdown) می‌شود\&. سپس، \fBsocat\fP پیش از خاتمه یافتن، به مدت ثانیه [timeval] منتظر می‌ماند\&. چنانچه در طول بازه مهلت زمانی بخش خواندن کانال دیگر نیز به EOF برسد، socat بدون انتظار برای پایان مهلت، خاتمه می‌یابد\&. پیش‌فرض 0\&.5 ثانیه است، مقدار 0 نیز معتبر است\&. این مهلت زمانی فقط برای نشانی‌هایی کاربرد دارد که بخش‌های خواندن و نوشتن آن‌ها را بتوان به‌طور جداگانه بست یا متوقف کرد\&..IP "\fB\f(CW\-T\fP\fP\f(CW\fP" مهلت زمانی کل عدم فعالیت: هنگامی که \fBsocat\fP هم‌اکنون در حلقهٔ انتقال قرار دارد و برای مدت [timeval] ثانیه هیچ اتفاقی رخ نداده باشد (داده‌ای نرسیده باشد، هیچ وقفه‌ای رخ نداده باشد\&.\&.\&.) به کار خود پایان می‌دهد\&. تا نسخهٔ 1\&.8\&.0\&.0 مقدار \(dq\&0\(dq\& به معنای \(dq\&نامحدود\(dq\& بود؛ از نسخهٔ 1\&.8\&.0\&.1 به بعد \(dq\&0\(dq\& به معنای 0 است و مقادیر 0> به معنای نامحدود هستند، پیش‌فرض \-1 است\&. .br برای پروتکل‌هایی مانند UDP که قادر به انتقال EOF نیستند کاربردی است\&. .IP "\fB\f(CW\-u\fP\fP" از حالت یک‌طرفه استفاده می‌کند\&. آدرس اول فقط برای خواندن و آدرس دوم فقط برای نوشتن استفاده می‌شود (مثال)\&. .IP "\fB\f(CW\-U\fP\fP" از حالت یک‌طرفه در جهت معکوس استفاده می‌کند\&. آدرس اول فقط برای نوشتن و آدرس دوم فقط برای خواندن استفاده می‌شود\&. .IP "\fB\f(CW\-g\fP\fP" هنگام تجزیهٔ گزینه‌های آدرس، بررسی نمی‌کند که آیا گزینه در محیط آدرس مشخص‌شده مفید تلقی می‌شود یا خیر\&. در صورتی از آن استفاده کنید که بخواهید، به عنوان مثال، اِعمال یک گزینهٔ socket بر روی یک دستگاه سریالی را تحمیل کنید\&. .IP "\fB\f(CW\-L\fP\fP\f(CW\fP" اگر lockfile وجود داشته باشد، با خطا خارج می‌شود\&. اگر lockfile وجود نداشته باشد، آن را ایجاد کرده و ادامه می‌دهد، و هنگام خروج lockfile را حذف (unlink) می‌کند\&. .IP "\fB\f(CW\-W\fP\fP\f(CW\fP" اگر lockfile وجود داشته باشد، تا زمان ناپدید شدن آن منتظر می‌ماند\&. وقتی lockfile وجود نداشته باشد، آن را ایجاد کرده و ادامه می‌دهد، و هنگام خروج lockfile را حذف (unlink) می‌کند\&. .IP "\fB\f(CW\-4\fP\fP" در صورتی که آدرس‌ها به‌طور ضمنی یا صریح نسخه‌ای را تعیین نکنند، از IP نسخهٔ 4 استفاده می‌کند\&. از نسخهٔ 1\&.8\&.0\&.1 به بعد این حالت پیش‌فرض است\&. .IP "\fB\f(CW\-6\fP\fP" در صورتی که آدرس‌ها به‌طور ضمنی یا صریح نسخه‌ای را تعیین نکنند، از IP نسخهٔ 6 استفاده می‌کند\&. .IP "\fB\f(CW\-0\fP\fP" نسخهٔ خاصی از IP را ترجیح نمی‌دهد؛ این امکان را به آدرس‌های غیرفعال (LISTEN، RECV، \&.\&.\&) می‌دهد تا در برخی پلتفرم‌ها (به‌جز BSD) به هر دو نسخه سرویس‌دهی کنند\&. .IP "\fB\f(CW\-\-statistics\fP\fP" .IP "\fB\f(CW\-S\fP\fP" پیش از پایان دادن به \fBsocat\fP، آمار انتقال (شمارنده‌های بایت‌ها و بلوک‌ها برای هر دو جهت) را ثبت می‌کند\&. .br همچنین سیگنال USR1 را ببینید\&. .br .PP .SH "مشخصات آدرس (ADDRESS SPECIFICATIONS)" .PP کاربر با آرگومان‌های خط فرمان آدرس، دستورالعمل‌ها و اطلاعات لازم برای برقراری جریان‌های بایت را به \fBsocat\fP می‌دهد\&. .PP مشخصات یک آدرس معمولاً شامل یک کلیدواژهٔ نوع آدرس، صفر یا چند پارامتر آدرس الزامی که با \(cq\&:\(cq\& از کلیدواژه و از یکدیگر جدا شده‌اند، و صفر یا چند گزینهٔ آدرس که با \(cq\&,\(cq\& از یکدیگر جدا شده‌اند می‌باشد\&. .PP کلیدواژه، نوع آدرس را مشخص می‌کند (به عنوان مثال TCP4، OPEN، EXEC)\&. برای برخی کلیدواژه‌ها مترادف‌هایی وجود دارد (\(cq\&\-\(cq\& برای STDIO، TCP برای TCP4)\&. کلیدواژه‌ها به حروف کوچک و بزرگ حساس نیستند\&. برای چند نوع آدرس خاص، کلیدواژه می‌تواند حذف شود: مشخصات آدرسی که با یک عدد شروع می‌شوند، آدرس‌های FD (توصیف‌گر فایل خام) فرض می‌شوند؛ اگر پیش از نخستین \(cq\&:\(cq\& یا \(cq\&,\(cq\& نویسهٔ \(cq\&/\(cq\& یافت شود، GOPEN (باز کردن عمومی فایل) در نظر گرفته می‌شود\&. .PP تعداد و نوع پارامترهای آدرس الزامی به نوع آدرس بستگی دارد\&. برای مثال، TCP4 نیازمند مشخصات سرور (نام یا آدرس)، و مشخصات پورت (شماره یا نام سرویس) است\&. .PP همراه با هر آدرس می‌توان صفر یا چند گزینهٔ آدرس را تعیین کرد\&. آن‌ها به روش‌هایی بر آدرس تأثیر می‌گذارند\&. گزینه‌ها شامل یک کلیدواژهٔ گزینه یا یک کلیدواژهٔ گزینه و یک مقدار هستند که با \(cq\&=\(cq\& از یکدیگر جدا شده‌اند\&. کلیدواژه‌های گزینه‌ها به حروف کوچک و بزرگ حساس نیستند\&. برای فیلتر کردن گزینه‌هایی که برای یک نوع آدرس مفید هستند، هر گزینه عضو یک گروه گزینه است\&. برای هر نوع آدرس مجموعه‌ای از گروه‌های گزینهٔ مجاز وجود دارد\&. تنها گزینه‌های متعلق به یکی از این گروه‌های آدرس می‌توانند استفاده شوند (به جز هنگام استفاده از گزینهٔ \-g)\&. .PP مشخصات آدرسی که از ساختار بالا پیروی می‌کنند، مشخصات آدرس \fIsingle\fP (تک) نیز نامیده می‌شوند\&. دو آدرس تک را می‌توان با \(dq\&!!\(dq\& ترکیب کرد تا یک آدرس از نوع \fIdual\fP (دوگانه) برای یک کانال تشکیل شود\&. در اینجا، آدرس اول توسط \fBsocat\fP برای خواندن داده‌ها و آدرس دوم برای نوشتن داده‌ها استفاده می‌شود\&. هیچ راهی برای تعیین یک گزینه تنها یک‌بار به طوری که روی هر دو آدرس تک اعمال شود وجود ندارد\&. .PP معمولاً آدرس‌ها در حالت خواندن/نوشتن باز می‌شوند\&. هنگامی که یک آدرس بخشی از یک مشخصات آدرس دوگانه باشد، یا هنگامی که گزینهٔ \-u یا \-U استفاده شود، ممکن است یک آدرس فقط برای خواندن یا فقط برای نوشتن به کار رود\&. در نظر گرفتن این موضوع در برخی از انواع آدرس مهم است\&. .PP از نسخهٔ 1\&.5\&.0 و بالاتر socat، تحلیل واژگانی تلاش می‌کند نقل‌قول‌ها و پرانتزها را به صورت معنادار مدیریت کند و امکان گریز دادن (escape) نویسه‌های خاص را فراهم می‌سازد\&. اگر یکی از نویسه‌های ( { [ \(cq\& یافت شود، نویسهٔ پایانی متناظر \- ) } ] \(cq\& \- جستجو می‌شود؛ آن‌ها همچنین می‌توانند به صورت تو در تو باشند\&. در داخل این ساختارها، نویسه‌ها و رشته‌های خاص socat مانند : , !! به صورت ویژه پردازش نمی‌شوند\&. تمام این نویسه‌ها و رشته‌ها را می‌توان با \e یا درون \(dq\&\(dq\& گریز داد\&. .PP.SH "انواع آدرس (ADDRESS TYPES)" .PP این بخش انواع آدرس‌های موجود را به همراه کلمات کلیدی، پارامترها و معناشناسی آن‌ها توصیف می‌کند\&. .PP .IP "\fB\f(CWCREATE:\fP\fP" فایل را با \f(CWcreat()\fP باز کرده و از توصیف‌گر فایل برای نوشتن استفاده می‌کند\&. این یک آدرس فقط‌نوشتنی است زیرا فایلی که با \f(CWcreat\fP باز شده باشد را نمی‌توان خواند\&. گزینه‌های \-u و \-U، و آدرس‌های دوگانه را ببینید\&. .br پرچم‌هایی مانند O_LARGEFILE را نمی‌توان اعمال کرد\&. اگر به آن‌ها نیاز دارید از OPEN همراه با گزینه‌های create,create استفاده کنید\&. .br مقدار باید یک مسیر معتبر، موجود یا ناموجود باشد\&. اگر یک لوله نام‌گذاری‌شده (named pipe) باشد، \f(CWcreat()\fP ممکن است مسدود (block) شود؛ اگر به یک سوکت اشاره کند، این یک خطا است\&. .br گروه‌های گزینه: FD,REG,NAMED .br گزینه‌های مفید: mode, mode, user, group, unlink\-early, unlink\-late, append .br همچنین ببینید: OPEN, GOPEN .IP .IP "\fB\f(CWDCCP\-CONNECT::\fP\fP (\fB\f(CWDCCP::\fP\fP)" یک اتصال DCCP به [آدرس IP] و [سرویس DCCP] مشخص‌شده بسته به مشخصات آدرس، تفکیک نام یا گزینه pf با استفاده از نگارش ۴ یا ۶ پروتکل IP برقرار می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP4,IP6,SCTP,CHILD,RETRY .br گزینه‌های مفید: bind, connect\-timeout, tos, dccp\-set\-ccid, nonblock, sourceport, retry, readbytes .br همچنین ببینید: DCCP4\-CONNECT, DCCP6\-CONNECT, DCCP\-LISTEN, TCP\-CONNECT SCTP\-CONNECT .IP "\fB\f(CWDCCP4\-CONNECT::\fP\fP (\fB\f(CWDCCP4::\fP\fP)" مشابه DCCP\-CONNECT، اما فقط از پروتکل IPv4 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP4,DCCP,CHILD,RETRY .br .IP "\fB\f(CWDCCP6\-CONNECT::\fP\fP (\fB\f(CWDCCP6::\fP\fP)" مشابه DCCP\-CONNECT، اما فقط از پروتکل IPv6 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP6,DCCP,CHILD,RETRY .br .IP .IP "\fB\f(CWDCCP\-LISTEN:\fP\fP (\fB\f(CWDCCP\-L:\fP\fP)" روی [سرویس DCCP] گوش فراداده و یک اتصال DCCP را می‌پذیرد\&. نگارش IP برابر با ۴ یا نگارش مشخص‌شده با گزینه آدرس pf، گزینه socat (\-4, \-6)، یا متغیر محیطی SOCAT_DEFAULT_LISTEN_IP است\&. توجه داشته باشید که باز کردن این آدرس معمولاً تا زمان اتصال یک کلاینت مسدود می‌شود\&. .br گروه‌های گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,IP6,DCCP,RETRY .br گزینه‌های مفید: fork, bind, range, max\-children, backlog, accept\-timeout, dccp\-set\-sid, su, reuseaddr, retry .br همچنین ببینید: DCCP4\-LISTEN, DCCP6\-LISTEN, TCP\-LISTEN, SCTP\-LISTEN, DCCP\-CONNECT .IP "\fB\f(CWDCCP4\-LISTEN:\fP\fP (\fB\f(CWDCCP4\-L:\fP\fP)" مشابه DCCP\-LISTEN، اما فقط از پروتکل IPv4 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,DCCP,RETRY .br .IP "\fB\f(CWDCCP6\-LISTEN:\fP\fP (\fB\f(CWDCCP6\-L:\fP\fP)" مشابه DCCP\-LISTEN، اما فقط از پروتکل IPv6 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP6,DCCP,RETRY .br .IP .IP "\fB\f(CWEXEC:\fP\fP" یک زیرفرآیند را fork می‌کند که ارتباط با فرآیند والد خود را برقرار ساخته و برنامه مشخص‌شده را با \f(CWexecvp()\fP فراخوانی می‌نماید\&. دستور یک دستور ساده است که آرگومان‌های آن با تک‌فاصله‌ها جدا شده‌اند\&. اگر نام برنامه شامل \(cq\&/\(cq باشد، بخش پس از آخرین \(cq\&/\(cq به عنوان ARGV[0] در نظر گرفته می‌شود\&. اگر نام برنامه یک مسیر نسبی باشد، معناشناسی \f(CWexecvp()\fP برای یافتن برنامه از طریق \f(CW$PATH\fP اعمال می‌گردد\&. پس از شروع موفقیت‌آمیز برنامه، \fBsocat\fP داده‌ها را به stdin فرآیند نوشته و با استفاده از یک سوکت دامنه یونیکس که به طور پیش‌فرض توسط \f(CWsocketpair()\fP ایجاد شده است، از stdout آن می‌خواند\&. (مثال) .br گروه‌های گزینه: FD,SOCKET,EXEC,FORK,TERMIOS .br گزینه‌های مفید: path, fdin, fdout, chroot, su, su\-d, nofork, socktype, pty, stderr, ctty, setsid, pipes, umask, login, sigint, sigquit, netns .br همچنین ببینید: SYSTEM,SHELL .IP "\fB\f(CWFD:\fP\fP" از توصیف‌گر فایل استفاده می‌کند\&. این توصیف‌گر باید از قبل به عنوان یک توصیف‌گر فایل معتبر در UN*X وجود داشته باشد\&. .br گروه‌های گزینه: FD (TERMIOS,REG,SOCKET) .br همچنین ببینید: STDIO, STDIN, STDOUT, STDERR .IP "\fB\f(CWGOPEN:\fP\fP" (Generic open یا باز کردن عمومی) این نوع آدرس تلاش می‌کند با هر ورودی در فایل‌سیستم، به جز دایرکتوری‌ها، به شکلی کاربردی رفتار کند\&. ممکن است یک مسیر نسبی یا مطلق باشد\&. اگر از قبل وجود داشته باشد، نوع آن بررسی می‌شود\&. در صورت سوکت دامنه یونیکس بودن، \fBsocat\fP متصل می‌شود؛ اگر اتصال ناموفق باشد، \fBsocat\fP آن را یک سوکت دیتاگرام در نظر گرفته و از فراخوانی‌های \f(CWsendto()\fP استفاده می‌کند\&. اگر ورودی سوکت نباشد، \fBsocat\fP آن را با اعمال پرچم \f(CWO_APPEND\fP باز می‌کند\&. اگر وجود نداشته باشد، با پرچم \f(CWO_CREAT\fP به عنوان یک فایل معمولی باز می‌شود (مثال)\&. .br گروه‌های گزینه: FD,REG,SOCKET,NAMED,OPEN .br همچنین ببینید: OPEN, CREATE, UNIX\-CONNECT.IP .IP "\fB\f(CWIP\-SENDTO::\fP\fP" یک سوکت خام IP باز می‌کند\&. بسته به مشخصه میزبان یا گزینه pf، پروتکل IP نسخه ۴ یا ۶ استفاده می‌شود\&. از برای ارسال بسته‌ها به [نشانی IP] استفاده کرده و بسته‌ها را از host دریافت می‌کند، و بسته‌های ارسالی از سایر میزبان‌ها را نادیده می‌گیرد\&. پروتکل ۲۵۵ از سوکت خامی استفاده می‌کند که در آن سرآیند IP بخشی از داده است\&. .br گروه‌های گزینه: FD,SOCKET,IP4,IP6 .br گزینه‌های مفید: pf, ttl .br همچنین ببینید: IP4\-SENDTO, IP6\-SENDTO, IP\-RECVFROM, IP\-RECV, UDP\-SENDTO, UNIX\-SENDTO .IP "\fB\f(CWINTERFACE:\fP\fP" با استفاده از بسته‌های خام شامل داده‌های سطح پیوند، با شبکه‌ای متصل روی یک رابط ارتباط برقرار می‌کند\&. نام رابط شبکه است\&. در حال حاضر فقط روی Linux در دسترس است\&. .br گروه‌های گزینه: FD,SOCKET .br گزینه‌های مفید: pf, type .br همچنین ببینید: ip\-recv .IP .IP "\fB\f(CWIP4\-SENDTO::\fP\fP" مانند IP\-SENDTO، اما همیشه از IPv4 استفاده می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP4 .br .IP "\fB\f(CWIP6\-SENDTO::\fP\fP" مانند IP\-SENDTO، اما همیشه از IPv6 استفاده می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP6 .br .IP .IP "\fB\f(CWIP\-DATAGRAM:
:\fP\fP" داده‌های خروجی را به نشانی مشخص‌شده ارسال می‌کند که به‌ویژه می‌تواند یک نشانی broadcast یا multicast باشد\&. بسته‌های دریافتی روی سوکت محلی بررسی می‌شوند تا مشخص شود آیا نشانی مبدأ آن‌ها با گزینه‌های RANGE یا TCPWRAP مطابقت دارد یا خیر\&. از این نوع نشانی برای نمونه می‌توان برای پیاده‌سازی ارتباطات متقارن یا نامتقارن broadcast یا multicast استفاده کرد\&. .br گروه‌های گزینه: FD, SOCKET, IP4, IP6, RANGE .br گزینه‌های مفید: bind, range, tcpwrap, broadcast, ip\-multicast\-loop, ip\-multicast\-ttl, ip\-multicast\-if, ip\-add\-membership, ip\-add\-source\-membership, ipv6\-join\-group, ipv6\-join\-source\-group, ttl, tos, pf .br همچنین ببینید: IP4\-DATAGRAM, IP6\-DATAGRAM, IP\-SENDTO, IP\-RECVFROM, IP\-RECV, UDP\-DATAGRAM .IP "\fB\f(CWIP4\-DATAGRAM::\fP\fP" مانند IP\-DATAGRAM، اما همیشه از IPv4 استفاده می‌کند\&. (مثال) .br گروه‌های گزینه: FD,SOCKET,IP4,RANGE .br .IP "\fB\f(CWIP6\-DATAGRAM::\fP\fP" مانند IP\-DATAGRAM، اما همیشه از IPv6 استفاده می‌کند\&. لطفاً توجه داشته باشید که IPv6 از broadcast پشتیبانی نمی‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP6,RANGE .br .IP .IP "\fB\f(CWIP\-RECVFROM:\fP\fP" یک سوکت خام IP برای باز می‌کند\&. بسته به گزینه pf، پروتکل IP نسخه ۴ یا ۶ استفاده می‌شود\&. یک بسته را از یک همتای نامشخص دریافت کرده و ممکن است یک یا چند بسته پاسخ به آن همتا ارسال کند\&. این حالت به‌ویژه با گزینه fork مفید است که در آن هر بسته ورودی \- از همتاهای دلخواه \- توسط زیرپروسه اختصاصی خود مدیریت می‌شود\&. این امر رفتاری شبیه به کارسازهای مرسوم مبتنی بر UDP مانند ntpd یا named را ممکن می‌سازد\&. .br لطفاً توجه داشته باشید در صورتی که نشانی IP فرستنده و گیرنده یکسان باشد، ممکن است بسته‌های پاسخ به عنوان ترافیک ورودی واکشی شوند زیرا هیچ شماره پورتی برای تمایز سوکت‌ها وجود ندارد\&. .br این نشانی به خوبی با همتاهای آدرس IP\-SENDTO کار می‌کند (به بالا مراجعه کنید)\&. پروتکل ۲۵۵ از سوکت خامی استفاده می‌کند که در آن سرآیند IP بخشی از داده است\&. .br یادداشت مربوط به نشانی‌های RECVFROM را ببینید\&. .br گروه‌های گزینه: FD,SOCKET,IP4,IP6,CHILD,RANGE .br گزینه‌های مفید: pf, fork, range, ttl, broadcast .br همچنین ببینید: IP4\-RECVFROM, IP6\-RECVFROM, IP\-SENDTO, IP\-RECV, UDP\-RECVFROM, UNIX\-RECVFROM .IP "\fB\f(CWIP4\-RECVFROM:\fP\fP" مانند IP\-RECVFROM، اما همیشه از IPv4 استفاده می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP4,CHILD,RANGE .br .IP "\fB\f(CWIP6\-RECVFROM:\fP\fP" مانند IP\-RECVFROM، اما همیشه از IPv6 استفاده می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP6,CHILD,RANGE .br .IP .IP "\fB\f(CWIP\-RECV:\fP\fP" یک سوکت خام IP برای باز می‌کند\&. بسته به گزینه pf، پروتکل IP نسخه ۴ یا ۶ استفاده می‌شود\&. بسته‌ها را از چندین همتای نامشخص دریافت کرده و داده‌ها را ادغام می‌کند\&. هیچ پاسخی امکان‌پذیر نیست، این یک نشانی فقط‌خواندنی است؛ به گزینه‌های \-u و \-U، و نشانی‌های دوگانه مراجعه کنید\&. این نشانی می‌تواند برای مثال توسط همتاهای نشانی IP\-SENDTO در socat مخاطب قرار گیرد\&. پروتکل ۲۵۵ از سوکت خامی استفاده می‌کند که در آن سرآیند IP بخشی از داده است\&. .br گروه‌های گزینه: FD,SOCKET,IP4,IP6,RANGE .br گزینه‌های مفید: pf, range .br همچنین ببینید: IP4\-RECV, IP6\-RECV, IP\-SENDTO, IP\-RECVFROM, UDP\-RECV, UNIX\-RECV .IP "\fB\f(CWIP4\-RECV:\fP\fP" مانند IP\-RECV، اما همیشه از IPv4 استفاده می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP4,RANGE .br .IP "\fB\f(CWIP6\-RECV:\fP\fP" مانند IP\-RECV، اما همیشه از IPv6 استفاده می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP6,RANGE .br .IP .IP "\fB\f(CWOPEN:\fP\fP" با استفاده از فراخوان سیستمی \f(CWopen()\fP فایل را باز می‌کند (مثال)\&. این عملیات روی سوکت‌های دامنه UNIX با شکست مواجه می‌شود\&. .br نکته: این نوع نشانی به‌ندرت در حالت دوطرفه مفید واقع می‌شود\&. .br گروه‌های گزینه: FD,REG,NAMED,OPEN .br گزینه‌های مفید: creat, excl, noatime, nofollow, append, rdonly, wronly, lock, readbytes, ignoreeof .br همچنین ببینید: CREATE, GOPEN, UNIX\-CONNECT.IP .IP "\fB\f(CWOPENSSL::\fP\fP" تلاش می‌کند تا یک اتصال SSL به [سرویس TCP] روی [نشانی IP] با استفاده از TCP/IP نسخه ۴ یا ۶ بسته به مشخصات نشانی، تفکیک نام، یا گزینه pf برقرار کند\&. .br نکته: تا نسخه 1\&.7\&.2\&.4 گواهی کارساز تنها از نظر اعتبار در برابر مخزن گواهی‌های سیستم یا cafile یا capath بررسی می‌شد، اما با نام کارساز یا نشانی IP آن تطبیق داده نمی‌شد\&. از نسخه 1\&.7\&.3\&.0 دستور socat گواهی طرف مقابل را برای تطابق با پارامتر یا مقدار گزینه openssl\-commonname بررسی می‌کند\&. دستور socat تلاش می‌کند آن را با commonName موضوع (subject) گواهی و نام‌های DNS افزونه subjectAltName گواهی تطبیق دهد\&. از نویسه‌های عام (wildcard) در گواهی پشتیبانی می‌شود\&. .br گروه‌های گزینه: FD,SOCKET,IP4,IP6,TCP,OPENSSL,RETRY .br گزینه‌های کاربردی: min\-proto\-version, cipher, verify, commonname, cafile, capath, certificate, key, compress, bind, pf, connect\-timeout, sourceport, retry .br همچنین ببینید: OPENSSL\-LISTEN, TCP .IP .IP "\fB\f(CWOPENSSL\-LISTEN:\fP\fP" روی tcp [سرویس TCP] گوش فرا می‌دهد\&. نسخه IP برابر ۴ یا نسخه مشخص‌شده با pf است\&. هنگامی که یک اتصال پذیرفته شود، این نشانی مانند یک کارساز SSL رفتار می‌کند\&. .br نکته: احتمالاً مایل خواهید بود که از گزینه certificate همراه با این نشانی استفاده کنید\&. .br نکته: گواهی کلاینت تنها از نظر اعتبار در برابر cafile یا capath بررسی می‌شود، اما با نام کلاینت یا نشانی IP آن تطبیق داده نمی‌شود! .br گروه‌های گزینه: FD,SOCKET,IP4,IP6,TCP,LISTEN,OPENSSL,CHILD,RANGE,RETRY .br گزینه‌های کاربردی: pf, min\-proto\-version, cipher, verify, commonname, cafile, capath, certificate, key, compress, fork, bind, range, tcpwrap, su, reuseaddr, retry .br همچنین ببینید: OPENSSL, TCP\-LISTEN .IP .IP "\fB\f(CWOPENSSL\-DTLS\-CLIENT::\fP\fP" تلاش می‌کند تا یک اتصال DTLS به [سرویس UDP] روی [نشانی IP] با استفاده از UDP/IP نسخه ۴ یا ۶ بسته به مشخصات نشانی، تفکیک نام، یا گزینه pf برقرار کند\&. .br دستور \fBSocat\fP مقادیر subjectAltName یا commonName گواهی طرف مقابل را در برابر گزینه openssl\-commonname نشانی یا نام میزبان بررسی می‌کند\&. از نویسه‌های عام (wildcard) در گواهی پشتیبانی می‌شود\&. .br از گزینه \-b دستور \fBsocat\fP استفاده کنید تا دیتاگرام‌ها به اندازه کافی کوچک شوند که به همراه سرریز (overhead) در شبکه جای بگیرند\&. از گزینه \-T برای جلوگیری از معلق ماندن نامحدود در هنگام قطع بی‌سر و صدای طرف مقابل استفاده کنید\&. .br گروه‌های گزینه: FD,SOCKET,IP4,IP6,OPENSSL,RETRY .br گزینه‌های کاربردی: min\-proto\-version, cipher, verify, commonname, cafile, capath, certificate, key, compress, bind, pf, sourceport, retry, rcvtimeo .br همچنین ببینید: OPENSSL\-DTLS\-SERVER, OPENSSL\-CONNECT, UDP\-CONNECT .IP .IP "\fB\f(CWOPENSSL\-DTLS\-SERVER:\fP\fP" روی UDP [سرویس UDP] گوش فرا می‌دهد\&. نسخه IP برابر ۴ یا نسخه مشخص‌شده با pf است\&. هنگامی که یک اتصال پذیرفته شود، این نشانی مانند یک کارساز DTLS رفتار می‌کند\&. .br نکته: احتمالاً مایل خواهید بود که از گزینه certificate همراه با این نشانی استفاده کنید\&. .br نکته: گواهی کلاینت تنها از نظر اعتبار در برابر cafile یا capath بررسی می‌شود، اما با نام کلاینت یا نشانی IP آن تطبیق داده نمی‌شود! از گزینه \-b دستور \fBsocat\fP استفاده کنید تا دیتاگرام‌ها به اندازه کافی کوچک شوند که به همراه سرریز در شبکه جای بگیرند\&. از گزینه \-T برای جلوگیری از معلق ماندن نامحدود در زمان قطع بی‌سر و صدای طرف مقابل استفاده کنید\&. .br گروه‌های گزینه: FD,SOCKET,IP4,IP6,LISTEN,OPENSSL,CHILD,RANGE,RETRY .br گزینه‌های کاربردی: pf, min\-proto\-version, cipher, verify, commonname, cafile, capath, certificate, key, compress, fork, bind, range, tcpwrap, su, reuseaddr, retry .br rcvtimeo .br همچنین ببینید: OPENSSL\-DTLS\-CLIENT, OPENSSL\-LISTEN, UDP\-LISTEN .IP .IP "\fB\f(CWPIPE:\fP\fP" اگر از قبل وجود داشته باشد، باز می‌شود\&. اگر وجود نداشته باشد، یک لوله نام‌گذاری‌شده ایجاد و باز می‌شود\&. از نسخه 1\&.4\&.3 دستور socat، لوله نام‌گذاری‌شده هنگام بسته شدن نشانی حذف می‌شود (اما گزینه unlink\-close را ببینید)\&. .br نکته: هنگامی که یک لوله هم برای خواندن و هم برای نوشتن استفاده شود، مانند یک سرویس بازآوا (echo) عمل می‌کند\&. .br نکته: هنگامی که یک لوله هم برای خواندن و هم برای نوشتن استفاده شود، و socat تلاش کند بایت‌های بیشتری نسبت به گنجایش بافر لوله بنویسد (در لینوکس 2\&.4: ۲۰۴۸ بایت)، ممکن است socat مسدود (block) شود\&. استفاده از گزینه‌ای در socat، مانند \f(CW\-b 2048\fP را مد نظر قرار دهید\&. .br گروه‌های گزینه: FD,NAMED,OPEN .br گزینه‌های کاربردی: rdonly, nonblock, group, user, mode, unlink\-early .br همچنین ببینید: unnamed pipe.IP "\fB\f(CWPIPE\fP\fP" یک لوله (pipe) بدون نام ایجاد کرده و از آن برای خواندن و نوشتن استفاده می‌کند\&. این آدرس مانند یک پژواک‌دهنده (echo) عمل می‌کند، زیرا هر چیزی که در آن نوشته شود بلافاصله به عنوان دادهٔ خوانده‌شده ظاهر می‌شود\&. .br نکته: هنگامی که socat تلاش می‌کند بایت‌های بیشتری نسبت به گنجایش صف لوله بنویسد (در لینوکس 2\&.4: ۲۰۴۸ بایت)، ممکن است socat مسدود (block) شود\&. برای مثال، استفاده از گزینهٔ \f(CW\-b 2048\fP را مد نظر قرار دهید\&. .br گروه‌های گزینه: FD .br همچنین ببینید: named pipe، SOCKETPAIR .IP "\fB\f(CWSOCKETPAIR\fP\fP" یک socketpair ایجاد کرده و از آن برای خواندن و نوشتن استفاده می‌کند\&. مانند یک پژواک‌دهنده عمل می‌کند، زیرا هر چیزی که در آن نوشته شود بلافاصله به عنوان دادهٔ خوانده‌شده ظاهر می‌شود\&. نوع سوکت پیش‌فرض datagram است، بنابراین مرزهای بسته (packet boundaries) را حفظ می‌کند\&. .br گروه‌های گزینه: FD .br گزینه‌های کاربردی: socktype .br همچنین ببینید: unnamed pipe .IP .IP "\fB\f(CWSTALL\fP\fP" بخش خواندن این آدرس هرگز داده‌ای و نه EOF ارائه می‌دهد؛ بخش نوشتن نیز هرگز برای نوشتن داده آماده نمی‌شود\&. این رفتار ممکن است برای آزمایش و برخی سناریوهای ویژه کاربردی باشد\&. .IP .IP "\fB\f(CWTEXT:\fP\fP" متن ارائه‌شده به عنوان پارامتر به عنوان دادهٔ ورودی در نظر گرفته می‌شود: در یک لوله داخلی بافر شده و سپس طبق معمول پردازش می‌شود\&. تبدیل‌های استاندارد روی رشته اعمال می‌شوند، بنابراین می‌توانید بررسی کنید که پارامترها چگونه تجزیه و آماده می‌شوند که این موضوع برای آدرس‌هایی مانند EXEC حیاتی است\&. .br خروجی روی این آدرس به \f(CWstdout\fP ارسال می‌شود\&. بنابراین این آدرس می‌تواند ساختارهایی مانند: .br \fB\f(CWecho \(dq\&\(dq\& | socat STDIO TCP::\fP\fP .br را با: .br \fB\f(CWsocat TEXT:\(dq\&\en\(dq\& TCP::\fP\fP .br جایگزین کند\&. به مثال مربوط به sudo در زیر نگاهی بیندازید\&. .IP .IP "\fB\f(CWPOSIXMQ\-READ:/\fP\fP" صف پیام‌های POSIX مشخص‌شده را باز کرده یا ایجاد می‌کند و پیام‌ها (بسته‌ها) را می‌خواند\&. این آدرس مرزهای بسته را حفظ می‌کند\&. .br این یک آدرس فقط‌خواندنی است؛ گزینه‌های \-u و \-U و آدرس‌های دوگانه (dual addresses) را ببینید\&. .br \fBSocat\fP این نوع آدرس را فقط در لینوکس ارائه می‌دهد زیرا POSIX MQ در آنجا مبتنی بر توصیف‌کننده‌های فایل (filedescriptors) یونیکس است\&. .br گزینه‌های کاربردی: posixmq\-priority, unlink\-early, unlink\-close, o\-nonblock, o\-creat, o\-excl, umask .IP .IP "\fB\f(CWPOSIXMQ\-RECEIVE:/\fP\fP" .IP "\fB\f(CWPOSIXMQ\-RECV:/\fP\fP" صف پیام‌های POSIX مشخص‌شده را باز کرده یا ایجاد می‌کند و یک پیام (بسته) را می‌خواند\&. .br این یک آدرس فقط‌خواندنی است\&. برای اطلاعات بیشتر POSIXMQ\-READ را ببینید\&. .br مثال: POSIX MQ recv with fork .br گزینه‌های کاربردی: posixmq\-priority, fork, max\-children, unlink\-early, unlink\-close, o\-creat, o\-excl, umask .IP .IP "\fB\f(CWPOSIXMQ\-SEND:/\fP\fP" صف پیام‌های POSIX مشخص‌شده را باز کرده یا ایجاد می‌کند و پیام‌ها (بسته‌ها) را می‌نویسد\&. .br این یک آدرس فقط‌نوشتنی است\&. برای اطلاعات بیشتر POSIXMQ\-READ را ببینید\&. .br (مثال) .br گزینه‌های کاربردی: posixmq\-priority, posixmq\-flush, fork, max\-children, unlink\-early, unlink\-close, o\-creat, o\-excl, umask .IP .IP "\fB\f(CWPOSIXMQ\-WRITE:/\fP\fP" همانند POSIXMQ\-SEND عمل می‌کند\&. .IP .IP "\fB\f(CWPOSIXMQ\-BIDIRECTIONAL:/mqueue\fP\fP" .IP "\fB\f(CWPOSIXMQ:/mqueue\fP\fP" صف پیام‌های POSIX مشخص‌شده را بسته به زمینه (context) در حالت خواندن و/یا نوشتن باز کرده یا ایجاد می‌کند، سپس پیام‌ها (بسته‌ها) را خوانده و/یا می‌نویسد\&. در حالت دوطرفه این صرفاً یک سرویس پژواک‌دهنده دیگر است\&. POSIXMQ حالت دوطرفه را رد می‌کند تا از خالی‌شدن ناخواستهٔ صف جلوگیری شود؛ در صورت نیاز از POSIXMQ\-BIDIRECTIONAL استفاده کنید\&. .br برای اطلاعات بیشتر POSIXMQ\-READ و POSIXMQ\-SEND را ببینید\&. .IP .IP "\fB\f(CWPROXY:::\fP\fP" با استفاده از نسخه ۴ یا ۶ TCP/IP بسته به تعیین نشانی، تحلیل نام یا گزینهٔ pf، به یک کارگزار پیشکار (HTTP proxy) روی درگاه ۸۰۸۰ متصل می‌شود و یک درخواست CONNECT برای hostname:port ارسال می‌کند\&. اگر پیشکار اجازهٔ دسترسی دهد و اتصال به مقصد موفقیت‌آمیز باشد، انتقال داده بین socat و مقصد می‌تواند آغاز شود (مثال)\&. توجه داشته باشید که ترافیک لزوماً نباید HTTP باشد، بلکه می‌تواند یک پروتکل دلخواه باشد\&. .br گروه‌های گزینه: FD,SOCKET,IP4,IP6,TCP,HTTP,RETRY .br گزینه‌های کاربردی: proxyport, ignorecr, proxyauth, resolve, crnl, bind, connect\-timeout, mss, sourceport, retry .br همچنین ببینید: SOCKS, TCP .IP "\fB\f(CWPTY\fP\fP" یک پایانه مجازی (pty) تولید کرده و از سمت master آن استفاده می‌کند\&. یک فرایند دیگر می‌تواند سمت slave پایانهٔ مجازی را باز کرده و مانند یک خط سریال یا پایانه از آن استفاده کند (مثال)\&. اگر هر دو سازوکار ptmx و openpty در دسترس باشند، از ptmx استفاده می‌شود (POSIX)\&. .br گروه‌های گزینه: FD,NAMED,PTY,TERMIOS .br گزینه‌های کاربردی: link, openpty, wait\-slave, mode, user, group .br همچنین ببینید: UNIX\-LISTEN, PIPE, EXEC, SYSTEM, SHELL .IP "\fB\f(CWREADLINE\fP\fP" از GNU readline و history روی stdio استفاده می‌کند تا ویرایش و استفاده مجدد از خطوط ورودی امکان‌پذیر شود (مثال)\&. این قابلیت به کتابخانه‌های GNU readline و history نیاز دارد\&. توجه داشته باشید که stdio باید یک دستگاه پایانه (یا شبه‌پایانه) باشد، در غیر این صورت به نظر می‌رسد readline کار نمی‌کند\&. .br گروه‌های گزینه: FD,READLINE,TERMIOS .br گزینه‌های کاربردی: history, noecho .br همچنین ببینید: STDIO .IP "\fB\f(CWSCTP\-CONNECT::\fP\fP" یک اتصال جریانی SCTP به [نشانی IP] و [سرویس TCP] مشخص‌شده با استفاده از نسخه ۴ یا ۶ IP بسته به تعیین نشانی، تحلیل نام یا گزینهٔ pf برقرار می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP4,IP6,SCTP,CHILD,RETRY .br گزینه‌های کاربردی: bind, pf, connect\-timeout, tos, mtudiscover, mtudiscover6, sctp\-maxseg, sctp\-nodelay, nonblock, sourceport, retry, readbytes .br همچنین ببینید: SCTP4\-CONNECT, SCTP6\-CONNECT, SCTP\-LISTEN, TCP\-CONNECT.IP "\fB\f(CWSCTP4\-CONNECT::\fP\fP" مانند SCTP\-CONNECT، اما فقط از پروتکل IPv4 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP4,SCTP,CHILD,RETRY .br .IP "\fB\f(CWSCTP6\-CONNECT::\fP\fP" مانند SCTP\-CONNECT، اما فقط از پروتکل IPv6 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP6,SCTP,CHILD,RETRY .br .IP "\fB\f(CWSCTP\-LISTEN:\fP\fP" روی [سرویس TCP] شنود می‌کند و یک اتصال SCTP را می‌پذیرد\&. نسخه IP برابر با 4 یا نسخه مشخص‌شده با گزینه آدرس pf، گزینه socat (\-4، \-6) یا متغیر محیطی SOCAT_DEFAULT_LISTEN_IP است\&. توجه داشته باشید که باز کردن این نشانی معمولاً تا زمان اتصال یک کلاینت مسدود می‌شود\&. .br گروه‌های گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,IP6,SCTP,RETRY .br گزینه‌های مفید: crnl, fork, bind, range, tcpwrap, pf, max\-children, backlog, accept\-timeout, sctp\-maxseg, sctp\-nodelay, su, reuseaddr, retry .br همچنین ببینید: SCTP4\-LISTEN, SCTP6\-LISTEN, TCP\-LISTEN, SCTP\-CONNECT .IP "\fB\f(CWSCTP4\-LISTEN:\fP\fP" مانند SCTP\-LISTEN، اما فقط از پروتکل IPv4 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,SCTP,RETRY .br .IP "\fB\f(CWSCTP6\-LISTEN:\fP\fP" مانند SCTP\-LISTEN، اما فقط از پروتکل IPv6 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP6,SCTP,RETRY .br .IP .IP "\fB\f(CWSOCKET\-CONNECT:::\fP\fP" با استفاده از پارامترهای سوکت اول و دوم داده‌شده و \f(CWSOCK_STREAM\fP (صفحه راهنمای socket(2) را ببینید) یک سوکت جریانی ایجاد کرده و به remote\-address متصل می‌شود\&. این دو پارامتر سوکت باید با اعداد int مشخص شوند\&. برای یافتن مقادیر مناسب به مستندات سیستم‌عامل و فایل‌های سرآیند خود مراجعه کنید\&. آرگومان remote\-address باید نمایش داده‌ای از یک ساختار sockaddr بدون مؤلفه‌های sa_family و (در BSD) sa_len باشد\&. .br لطفاً توجه داشته باشید که علاوه بر گزینه‌های گروه‌های مشخص‌شده، در صورت اعمال گزینه \-g در socat می‌توانید از گزینه‌های پروتکل‌های سطح بالاتر نیز استفاده کنید\&. .br گروه‌های گزینه: FD,SOCKET,CHILD,RETRY .br گزینه‌های مفید: bind, setsockopt, .br همچنین ببینید: TCP, UDP\-CONNECT, UNIX\-CONNECT, SOCKET\-LISTEN, SOCKET\-SENDTO .IP "\fB\f(CWSOCKET\-DATAGRAM::::\fP\fP" با استفاده از سه پارامتر سوکت داده‌شده نخست (صفحه راهنمای socket(2) را ببینید) یک سوکت دیتاگرام ایجاد کرده و داده‌های خروجی را به remote\-address ارسال می‌کند\&. این سه پارامتر سوکت باید با اعداد int مشخص شوند\&. برای یافتن مقادیر مناسب به مستندات سیستم‌عامل و فایل‌های سرآیند خود مراجعه کنید\&. آرگومان remote\-address باید نمایش داده‌ای از یک ساختار sockaddr بدون مؤلفه‌های sa_family و (در BSD) sa_len باشد\&. .br لطفاً توجه داشته باشید که علاوه بر گزینه‌های گروه‌های مشخص‌شده، در صورت اعمال گزینه \-g در socat می‌توانید از گزینه‌های پروتکل‌های سطح بالاتر نیز استفاده کنید\&. .br گروه‌های گزینه: FD,SOCKET,RANGE .br گزینه‌های مفید: bind, range, setsockopt, .br همچنین ببینید: UDP\-DATAGRAM, IP\-DATAGRAM, SOCKET\-SENDTO, SOCKET\-RECV, SOCKET\-RECVFROM .IP "\fB\f(CWSOCKET\-LISTEN:::\fP\fP" با استفاده از پارامترهای سوکت اول و دوم داده‌شده و \f(CWSOCK_STREAM\fP (صفحه راهنمای socket(2) را ببینید) یک سوکت جریانی ایجاد کرده و منتظر اتصالات ورودی روی local\-address می‌ماند\&. این دو پارامتر سوکت باید با اعداد int مشخص شوند\&. برای یافتن مقادیر مناسب به مستندات سیستم‌عامل و فایل‌های سرآیند خود مراجعه کنید\&. آرگومان local\-address باید نمایش داده‌ای از یک ساختار sockaddr بدون مؤلفه‌های sa_family و (در BSD) sa_len باشد\&. .br لطفاً توجه داشته باشید که علاوه بر گزینه‌های گروه‌های مشخص‌شده، در صورت اعمال گزینه \-g در socat می‌توانید از گزینه‌های پروتکل‌های سطح بالاتر نیز استفاده کنید\&. .br گروه‌های گزینه: FD,SOCKET,LISTEN,RANGE,CHILD,RETRY .br گزینه‌های مفید: setsockopt, setsockopt\-listen, .br همچنین ببینید: TCP, UDP\-CONNECT, UNIX\-CONNECT, SOCKET\-LISTEN, SOCKET\-SENDTO, SOCKET\-SENDTO .IP "\fB\f(CWSOCKET\-RECV::::\fP\fP" با استفاده از سه پارامتر سوکت داده‌شده (صفحه راهنمای socket(2) را ببینید) یک سوکت ایجاد کرده و آن را به مقید می‌کند\&. داده‌های ورودی را دریافت می‌کند\&. این سه پارامتر باید با اعداد int مشخص شوند\&. برای یافتن مقادیر مناسب به مستندات سیستم‌عامل و فایل‌های سرآیند خود مراجعه کنید\&. آرگومان local\-address باید نمایش داده‌ای از یک ساختار sockaddr بدون مؤلفه‌های sa_family و (در BSD) sa_len باشد\&. .br گروه‌های گزینه: FD,SOCKET,RANGE .br گزینه‌های مفید: range, setsockopt, setsockopt\-listen .br همچنین ببینید: UDP\-RECV, IP\-RECV, UNIX\-RECV, SOCKET\-DATAGRAM, SOCKET\-SENDTO, SOCKET\-RECVFROM .IP "\fB\f(CWSOCKET\-RECVFROM::::\fP\fP" با استفاده از سه پارامتر سوکت داده‌شده (صفحه راهنمای socket(2) را ببینید) یک سوکت ایجاد کرده و آن را به مقید می‌کند\&. داده‌های دریافتی را تحویل گرفته و پاسخ‌ها را برای فرستنده پس می‌فرستد\&. سه پارامتر اول باید به صورت اعداد int مشخص شوند\&. برای یافتن مقادیر مناسب به مستندات سیستم‌عامل و فایل‌های سرآیند خود مراجعه کنید\&. آرگومان local\-address باید نمایش داده‌ای از یک ساختار sockaddr بدون مؤلفه‌های sa_family و (در BSD) sa_len باشد\&. .br یادداشت مربوط به نشانی‌های RECVFROM را ببینید\&. .br گروه‌های گزینه: FD,SOCKET,CHILD,RANGE .br گزینه‌های مفید: fork, range, setsockopt, setsockopt\-listen .br همچنین ببینید: UDP\-RECVFROM, IP\-RECVFROM, UNIX\-RECVFROM, SOCKET\-DATAGRAM, SOCKET\-SENDTO, SOCKET\-RECV.IP "\fB\f(CWSOCKET\-SENDTO::::\fP\fP" با استفاده از سه پارامتر داده‌شدهٔ سوکت، یک سوکت ایجاد می‌کند (به راهنمای socket(2) مراجعه کنید)\&. داده‌های ارسالی را به آدرس داده‌شده می‌فرستد و پاسخ‌ها را دریافت می‌کند\&. این سه پارامتر باید به صورت اعداد int مشخص شوند\&. برای یافتن مقادیر مناسب به مستندات سیستم‌عامل و فایل‌های سرآیند (include) خود مراجعه کنید\&. remote\-address باید بازنمایی داده‌ای از ساختار sockaddr بدون مؤلفه‌های sa_family و (در BSD) sa_len باشد\&. .br گروه‌های گزینه: FD,SOCKET .br گزینه‌های کاربردی: bind, setsockopt, setsockopt\-listen .br همچنین ببینید: UDP\-SENDTO, IP\-SENDTO, UNIX\-SENDTO, SOCKET\-DATAGRAM, SOCKET\-RECV SOCKET\-RECVFROM .IP "\fB\f(CWACCEPT\-FD:\fP\fP" انتظار یک سوکت شنونده در را دارد و یک یا چند اتصال (با گزینهٔ fork) را می‌پذیرد\&. این نوع آدرس تحت کنترل systemd در \(dq\&inetd mode\(dq مفید است\&. .br مثال: (example) .br گروه‌های گزینه: FD, SOCKET, TCP, CHILD, RETRY .br گزینه‌های کاربردی: fork, range, sourceport, lowport, tcpwrap .IP "\fB\f(CWSOCKS4:::\fP\fP" از طریق [آدرس IP] به [آدرس IPv4] روی [سرویس TCP]، با استفاده از پروتکل socks نسخهٔ ۴ بر روی پروتکل IP نسخهٔ ۴ یا ۶ بسته به مشخصات آدرس، تحلیل نام، یا گزینهٔ pf متصل می‌شود (example)\&. .br گروه‌های گزینه: FD,SOCKET,IP4,IP6,TCP,SOCKS4,RETRY .br گزینه‌های کاربردی: socksuser, socksport, sourceport, pf, retry .br همچنین ببینید: SOCKS5, SOCKS4A, PROXY, TCP .IP .IP "\fB\f(CWSOCKS4A:::\fP\fP" مشابه SOCKS4، اما از پروتکل socks نسخهٔ 4a استفاده می‌کند، بنابراین تحلیل نام میزبان را به کارگزار socks واگذار می‌نماید\&. .br گروه‌های گزینه: FD,SOCKET,IP4,IP6,TCP,SOCKS4,RETRY .br .IP .IP "\fB\f(CWSOCKS5\-CONNECT::::\fP\fP" .IP "\fB\f(CWSOCKS5\-CONNECT:::\fP\fP" از طریق [آدرس IP] به [آدرس IPv4] روی [سرویس TCP]، با استفاده از پروتکل socks نسخهٔ ۵ بر روی TCP متصل می‌شود\&. در حال حاضر هیچ سازوکار احراز هویتی ارائه نشده است\&. .br گروه‌های گزینه: FD, SOCKET, IP4, IP6, TCP, CHILD, RETRY .br گزینه‌های کاربردی: socksport, socksuser, sockspass, sourceport, pf, retry .br همچنین ببینید: SOCKS5\-LISTEN, SOCKS4, SOCKS4A, PROXY, TCP .IP .IP "\fB\f(CWSOCKS5\-LISTEN::::\fP\fP" .IP "\fB\f(CWSOCKS5\-LISTEN:::\fP\fP" با استفاده از پروتکل socks نسخهٔ ۵ بر روی TCP به [آدرس IP] متصل می‌شود و آن را برای پذیرش اتصال‌های ورودی روی [سرویس TCP] و مقید به <\-listen\-host> [آدرس IPv4] در وضعیت شنود قرار می‌دهد\&. در حال حاضر هیچ سازوکار احراز هویتی ارائه نشده است\&. .br گروه‌های گزینه: FD, SOCKET, IP4, IP6, TCP, CHILD, RETRY .br گزینه‌های کاربردی: sourceport, pf, retry .br همچنین ببینید: SOCKS5\-CONNECT, .IP .IP "\fB\f(CWSTDERR\fP\fP" از توصیف‌گر فایل ۲ استفاده می‌کند\&. .br این یک آدرس فقط‌نوشتنی است، گزینه‌های \-u و \-U، و آدرس‌های دوگانه (dual addresses) را ببینید\&. .br گروه‌های گزینه: FD (TERMIOS,REG,SOCKET) .br همچنین ببینید: FD .IP "\fB\f(CWSTDIN\fP\fP" از توصیف‌گر فایل ۰ استفاده می‌کند\&. .br این یک آدرس فقط‌خواندنی است، گزینه‌های \-u و \-U، و آدرس‌های دوگانه را ببینید\&. .br گروه‌های گزینه: FD (TERMIOS,REG,SOCKET) .br گزینه‌های کاربردی: readbytes .br همچنین ببینید: FD .IP "\fB\f(CWSTDIO\fP\fP" از توصیف‌گر فایل ۰ برای خواندن، و ۱ برای نوشتن استفاده می‌کند\&. .br گروه‌های گزینه: FD (TERMIOS,REG,SOCKET) .br گزینه‌های کاربردی: readbytes .br همچنین ببینید: FD .IP "\fB\f(CWSTDOUT\fP\fP" از توصیف‌گر فایل ۱ استفاده می‌کند\&. .br این یک آدرس فقط‌نوشتنی است، گزینه‌های \-u و \-U، و آدرس‌های دوگانه را ببینید\&. .br گروه‌های گزینه: FD (TERMIOS,REG,SOCKET) .br همچنین ببینید: FD .IP "\fB\f(CWSHELL:\fP\fP" .IP "\fB\f(CWSHELL\fP\fP" یک زیرپردازه را منشعب (fork) می‌کند که ارتباط با پردازهٔ والد خود را برقرار ساخته و برنامهٔ مشخص‌شده را با شل پیکربندی‌شده ($SHELL) فراخوانی می‌نماید\&. توجه داشته باشید که [رشته] نباید شامل \(cq\&,\(cq\& یا \(dq\&!!\(dq\& باشد، و ممکن است نویسهٔ \(cq\&:\(cq\& و نویسه‌های متای شل نیاز به محافظت (escape) داشته باشند\&. پس از شروع موفقیت‌آمیز برنامه، \fBsocat\fP داده‌ها را در stdin پردازه می‌نویسد و از stdout آن می‌خواند\&. .br هنگامی که بدون پارامتر فراخوانی شود، یک شل تعاملی باز می‌کند\&. گروه‌های گزینه: FD,SOCKET,EXEC,FORK,TERMIOS .br گزینه‌های کاربردی: path, fdin, fdout, chroot, su, su\-d, nofork, socktype, pty, stderr, ctty, setsid, pipes, umask, sigint, sigquit .br همچنین ببینید: EXEC, SYSTEM.IP "\fB\f(CWSYSTEM:\fP\fP" یک زیرپردازه را فورک (fork) می‌کند که ارتباط با پردازه والد خود را برقرار کرده و برنامه مشخص‌شده را با \f(CWsystem()\fP فراخوانی می‌کند\&. لطفاً توجه داشته باشید که [رشته] نباید شامل \(cq\&,\(cq\& یا \(dq\&!!\(dq\& باشد، و نویسه‌های فرا (meta characters) پوسته ممکن است نیاز به حفاظت (escape) داشته باشند\&. پس از شروع موفقیت‌آمیز برنامه، \fBsocat\fP داده‌ها را در stdin پردازه می‌نویسد و از stdout آن می‌خواند\&. .br گروه‌های گزینه: FD,SOCKET,EXEC,FORK,TERMIOS .br گزینه‌های مفید: path, fdin, fdout, chroot, su, su\-d, nofork, socktype, pty, stderr, ctty, setsid, pipes, umask, sigint, sigquit, netns .br همچنین ببینید: EXEC, SHELL .IP "\fB\f(CWTCP::\fP\fP" به [سرویس TCP] روی [آدرس IP] با استفاده از TCP/IP نسخه ۴ یا ۶ بسته به مشخصات نشانی، تفکیک نام، یا گزینه pf متصل می‌شود\&. .br گروه‌های گزینه: FD,SOCKET,IP4,IP6,TCP,RETRY .br گزینه‌های مفید: connect\-timeout, retry, sourceport, netns, crnl, bind, pf, tos, mtudiscover, mtudiscover6, mss, nodelay, nonblock, readbytes .br همچنین ببینید: TCP4, TCP6, TCP\-LISTEN, UDP, SCTP\-CONNECT, UNIX\-CONNECT .IP "\fB\f(CWTCP4::\fP\fP" مانند TCP، اما فقط از پروتکل IPv4 پشتیبانی می‌کند (مثال)\&. .br گروه‌های گزینه: FD,SOCKET,IP4,TCP,RETRY .br .IP "\fB\f(CWTCP6::\fP\fP" مانند TCP، اما فقط از پروتکل IPv6 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP6,TCP,RETRY .br .IP "\fB\f(CWTCP\-LISTEN:\fP\fP" به [سرویس TCP] گوش فرامی‌دهد و یک اتصال TCP/IP را می‌پذیرد\&. نسخه IP برابر با ۴ یا نسخه مشخص‌شده با گزینه نشانی pf، گزینه socat (\-4, \-6)، یا متغیر محیطی SOCAT_DEFAULT_LISTEN_IP است\&. توجه داشته باشید که باز کردن این نشانی معمولاً تا زمان اتصال یک کلاینت مسدود (block) می‌شود\&. .br گروه‌های گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,IP6,TCP,RETRY .br گزینه‌های مفید: crnl, fork, bind, range, tcpwrap, pf, max\-children, backlog, accept\-timeout, mss, su, reuseaddr, retry, cool\-write .br همچنین ببینید: TCP4\-LISTEN, TCP6\-LISTEN, UDP\-LISTEN, SCTP\-LISTEN, UNIX\-LISTEN, OPENSSL\-LISTEN, TCP\-CONNECT .IP "\fB\f(CWTCP4\-LISTEN:\fP\fP" مانند TCP\-LISTEN، اما فقط از پروتکل IPv4 پشتیبانی می‌کند (مثال)\&. .br گروه‌های گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,TCP,RETRY .br .IP "\fB\f(CWTCP6\-LISTEN:\fP\fP" مانند TCP\-LISTEN، اما فقط از پروتکل IPv6 پشتیبانی می‌کند\&. .br گزینه مفید اضافی: ipv6only .br گروه‌های گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP6,TCP,RETRY .br .IP "\fB\f(CWTUN[:/]\fP\fP" یک دستگاه TUN/TAP لینوکس ایجاد کرده و به صورت اختیاری نشانی و netmask ارائه‌شده توسط پارامترها را به آن اختصاص می‌دهد\&. رابط شبکه حاصل تقریباً برای استفاده توسط سایر پردازه‌ها آماده است؛ socat به «سمت سیمی» (\(dq\&wire side\(dq\&) آن خدمت‌رسانی می‌کند\&. این نشانی نیازمند دسترسی خواندن و نوشتن به دستگاه شبیه‌ساز تونل، معمولاً \f(CW/dev/net/tun\fP ، و همچنین مجوز تنظیم برخی از \f(CWioctl()s\fP است\&. \fBگزینه iff\-up برای فعال‌سازی فوری رابط لازم است!\fP .br نکته: اگر قصد انتقال بسته‌ها بین دو «سمت سیمی» socat را دارید، به پروتکلی نیاز دارید که مرزهای بسته‌ها را حفظ کند، مانند UDP؛ پروتکل TCP ممکن است با گزینه nodelay کار کند\&. .br گروه‌های گزینه: FD,NAMED,OPEN,TUN .br گزینه‌های مفید: iff\-up, tun\-device, tun\-name, tun\-type, interface\-mtu, iff\-no\-pi, netns .br همچنین ببینید: ip\-recv .IP .IP "\fB\f(CWUDP::\fP\fP" به [سرویس UDP] روی [آدرس IP] با استفاده از UDP/IP نسخه ۴ یا ۶ بسته به مشخصات نشانی، تفکیک نام، یا گزینه pf متصل می‌شود\&. .br لطفاً توجه داشته باشید که به دلیل ویژگی‌های پروتکل UDP، هیچ اتصال واقعی برقرار نمی‌شود؛ برای «اتصال» به سرور باید داده ارسال شود، و هیچ وضعیت پایان فایل (end\-of\-file) قابل انتقال نیست\&. .br از نسخه 1\&.8\&.1\&.0، سوکت هنگام خاموش شدن، یک بسته UDP با طول صفر ارسال می‌کند که ممکن است وضعیت EOF را در طرف مقابل تحریک کند (گزینه ضمنی shut\-null)\&. رفتار پیشین را می‌توانید با گزینه shut\-none بازیابی کنید\&. .br گروه‌های گزینه: FD,SOCKET,IP4,IP6 .br گزینه‌های مفید: ttl, tos, bind, sourceport, pf .br همچنین ببینید: UDP4, UDP6, UDP\-LISTEN, TCP, IP.IP "\fB\f(CWUDP4::\fP\fP" مشابه UDP، اما فقط از پروتکل IPv4 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP4 .br .IP "\fB\f(CWUDP6::\fP\fP" مشابه UDP، اما فقط از پروتکل IPv6 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP6 .br .IP "\fB\f(CWUDP\-DATAGRAM:
:\fP\fP" داده‌های خروجی را به نشانی مشخص‌شده ارسال می‌کند که به‌ویژه می‌تواند یک نشانی broadcast یا multicast باشد\&. بسته‌های ورودی به سوکت محلی تنها زمانی برای پورت راه دورِ صحیح بررسی می‌شوند که از گزینهٔ sourceport استفاده شده باشد (این تغییر از نسخهٔ 1\&.7\&.4\&.0 در \fBSocat\fP اعمال شده است) و نشانی‌های مبدأ آن‌ها با گزینه‌های RANGE یا TCPWRAP مطابقت داشته باشد\&. این نوع آدرس می‌تواند برای نمونه جهت پیاده‌سازی ارتباطات متقارن یا نامتقارن broadcast یا multicast به کار رود\&. .br گروه‌های گزینه: FD,SOCKET,IP4,IP6,RANGE .br گزینه‌های مفید: bind, range, tcpwrap, broadcast, ip\-multicast\-loop, ip\-multicast\-ttl, ip\-multicast\-if, ip\-add\-membership, ip\-add\-source\-membership, ipv6\-join\-group, ipv6\-join\-source\-group, ttl, tos, sourceport, pf .br همچنین ببینید: UDP4\-DATAGRAM, UDP6\-DATAGRAM, UDP\-SENDTO, UDP\-RECVFROM, UDP\-RECV, UDP\-CONNECT, UDP\-LISTEN, IP\-DATAGRAM .IP "\fB\f(CWUDP4\-DATAGRAM:
:\fP\fP" مشابه UDP\-DATAGRAM، اما فقط از پروتکل IPv4 پشتیبانی می‌کند (example1، example2)\&. .br گروه‌های گزینه: FD,SOCKET,IP4, RANGE .IP "\fB\f(CWUDP6\-DATAGRAM:
:\fP\fP" مشابه UDP\-DATAGRAM، اما فقط از پروتکل IPv6 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP6,RANGE .IP "\fB\f(CWUDP\-LISTEN:\fP\fP" منتظر یک بستهٔ UDP/IP ورودی روی [سرویس UDP] می‌ماند و به فرستنده `connects\(cq\& می‌کند\&. نسخهٔ IP پذیرفته‌شده 4 یا نسخهٔ مشخص‌شده با گزینهٔ pf است\&. لطفاً توجه داشته باشید که به دلیل ویژگی‌های پروتکل UDP، هیچ اتصال واقعی برقرار نمی‌شود؛ داده‌ها ابتدا باید از سمت طرف مقابل برسند، بنابراین، باز کردن این آدرس معمولاً تا زمان اتصال یک کلاینت مسدود می‌شود\&. علاوه بر این، هیچ وضعیت پایان فایلی (EOF) در UDP مشخص نشده است\&. .br از نسخهٔ 1\&.8\&.1\&.0، سوکت هنگام خاموش شدن یک بستهٔ UDP با طول صفر می‌فرستد که ممکن است EOF را در طرف مقابل فعال کند (گزینهٔ ضمنی shut\-null)\&. رفتار پیشین را با گزینهٔ shut\-none بازیابی کنید\&. .br گروه‌های گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,IP6 .br گزینه‌های مفید: fork, bind, range, pf .br همچنین ببینید: UDP, UDP4\-LISTEN, UDP6\-LISTEN, TCP\-LISTEN .IP "\fB\f(CWUDP4\-LISTEN:\fP\fP" مشابه UDP\-LISTEN، اما فقط از پروتکل IPv4 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP4 .br .IP "\fB\f(CWUDP6\-LISTEN:\fP\fP" مشابه UDP\-LISTEN، اما فقط از پروتکل IPv6 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,LISTEN,CHILD,RANGE,IP6 .br .IP "\fB\f(CWUDP\-SENDTO::\fP\fP" با سوکت همتای مشخص‌شده، تعریف‌شده با [سرویس UDP] روی [نشانی IP]، با استفاده از UDP/IP نسخهٔ 4 یا 6 بسته به تعیین نشانی، تفکیک نام، یا گزینهٔ pf ارتباط برقرار می‌کند\&. این آدرس فقط به آن سوکت همتا بسته می‌فرستد و فقط از آن بسته دریافت می‌کند\&. این آدرس در واقع یک کلاینت دیتاگرام را پیاده‌سازی می‌کند\&. به‌خوبی با آدرس‌های همتای UDP\-RECVFROM و UDP\-RECV در socat کار می‌کند\&. هنگامی که ممکن است طرف مقابل ابتدا داده بفرستد، UDP\-DATAGRAM ترجیح داده می‌شود\&. .br گروه‌های گزینه: FD,SOCKET,IP4,IP6 .br گزینه‌های مفید: ttl, tos, bind, sourceport, pf .br همچنین ببینید: UDP4\-SENDTO, UDP6\-SENDTO, UDP\-RECVFROM, UDP\-RECV, UDP\-CONNECT, UDP\-LISTEN, IP\-SENDTO .IP "\fB\f(CWUDP4\-SENDTO::\fP\fP" مشابه UDP\-SENDTO، اما فقط از پروتکل IPv4 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP4 .IP "\fB\f(CWUDP6\-SENDTO::\fP\fP" مشابه UDP\-SENDTO، اما فقط از پروتکل IPv6 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP6 .IP .IP "\fB\f(CWUDP\-RECVFROM:\fP\fP" یک سوکت UDP روی [سرویس UDP] با استفاده از UDP/IP نسخهٔ 4 یا 6 بسته به گزینهٔ pf ایجاد می‌کند\&. یک بسته را از یک همتای نامشخص دریافت می‌کند و ممکن است یک یا چند بستهٔ پاسخ را به همان همتا ارسال کند\&. این حالت به‌ویژه با گزینهٔ fork مفید است که در آن هر بستهٔ ورودی \- از همتاهای دلخواه \- توسط زیرپردازش اختصاصی خود رسیدگی می‌شود\&. این امر رفتاری شبیه به سرورهای معمول مبتنی بر UDP مانند ntpd یا named را امکان‌پذیر می‌کند\&. این آدرس به‌خوبی با آدرس‌های همتای UDP\-SENDTO در socat کار می‌کند\&. .br نکته: هنگامی که آدرس دوم پیش از ورود به حلقهٔ انتقال ناموفق شود، بسته دور انداخته می‌شود\&. برای جلوگیری از دست رفتن داده، از گزینهٔ retry یا forever روی آدرس دوم استفاده کنید\&. هنگامی که نشانی همتا را می‌دانید، UDP\-DATAGRAM ارجح است\&. .br گروه‌های گزینه: FD,SOCKET,IP4,IP6,CHILD,RANGE .br گزینه‌های مفید: fork, ttl, tos, bind, sourceport, pf .br همچنین ببینید: UDP4\-RECVFROM, UDP6\-RECVFROM, UDP\-SENDTO, UDP\-RECV, UDP\-CONNECT, UDP\-LISTEN, IP\-RECVFROM, UNIX\-RECVFROM .IP "\fB\f(CWUDP4\-RECVFROM:\fP\fP" مشابه UDP\-RECVFROM، اما فقط از پروتکل IPv4 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP4,CHILD,RANGE .IP "\fB\f(CWUDP6\-RECVFROM:\fP\fP" مشابه UDP\-RECVFROM، اما فقط از پروتکل IPv6 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP6,CHILD,RANGE.IP .IP "\fB\f(CWUDP\-RECV:\fP\fP" یک سوکت UDP روی [سرویس UDP] با استفاده از UDP/IP نسخه ۴ یا ۶ بسته به گزینه pf ایجاد می‌کند\&. بسته‌ها را از چندین همتای نامشخص دریافت کرده و داده‌ها را با هم ادغام می‌کند\&. امکان ارسال پاسخ وجود ندارد\&. این گزینه به‌خوبی برای مثال با همتاهای آدرس UDP\-SENDTO در socat کار می‌کند؛ رفتاری شبیه به یک سرور syslog دارد\&. .br این یک آدرس فقط‌خواندنی است، گزینه‌های \-u و \-U، و آدرس‌های دوگانه (dual addresses) را ببینید\&. .br نکته: اگر به گزینه fork نیاز دارید، به‌جای آن از UDP\-RECVFROM در حالت یک‌طرفه (با گزینه \-u) استفاده کنید\&. .br گروه‌های گزینه: FD,SOCKET,IP4,IP6,RANGE .br گزینه‌های کاربردی: pf, bind, sourceport, ttl, tos .br همچنین ببینید: UDP4\-RECV, UDP6\-RECV, UDP\-SENDTO, UDP\-RECVFROM, UDP\-CONNECT, UDP\-LISTEN, IP\-RECV, UNIX\-RECV .IP "\fB\f(CWUDP4\-RECV:\fP\fP" مانند UDP\-RECV، اما فقط از پروتکل IPv4 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP4,RANGE .IP "\fB\f(CWUDP6\-RECV:\fP\fP" مانند UDP\-RECV، اما فقط از پروتکل IPv6 پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,IP6,RANGE .IP .IP "\fB\f(CWUDPLITE\-CONNECT::\fP\fP" .IP "\fB\f(CWUDPLITE4\-CONNECT::\fP\fP" .IP "\fB\f(CWUDPLITE6\-CONNECT::\fP\fP" .IP "\fB\f(CWUDPLITE\-DATAGRAM:
:\fP\fP" .IP "\fB\f(CWUDPLITE4\-DATAGRAM:
:\fP\fP" .IP "\fB\f(CWUDPLITE6\-DATAGRAM:
:\fP\fP" .IP "\fB\f(CWUDPLITE\-LISTEN:\fP\fP" .IP "\fB\f(CWUDPLITE4\-LISTEN:\fP\fP" .IP "\fB\f(CWUDPLITE6\-LISTEN:\fP\fP" .IP "\fB\f(CWUDPLITE\-SENDTO::\fP\fP" .IP "\fB\f(CWUDPLITE4\-SENDTO::\fP\fP" .IP "\fB\f(CWUDPLITE6\-SENDTO::\fP\fP" .IP "\fB\f(CWUDPLITE\-RECVFROM:\fP\fP" .IP "\fB\f(CWUDPLITE4\-RECVFROM:\fP\fP" .IP "\fB\f(CWUDPLITE6\-RECVFROM:\fP\fP" .IP "\fB\f(CWUDPLITE\-RECV:\fP\fP" .IP "\fB\f(CWUDPLITE4\-RECV:\fP\fP" .IP "\fB\f(CWUDPLITE6\-RECV:\fP\fP" آدرس‌های UDPLITE تقریباً با آدرس‌های متناظر UDP یکسان هستند اما از پروتکل UDP\-Lite استفاده می‌کنند و دارای گروه گزینه اضافی UDPLITE می‌باشند\&. .br .IP .IP "\fB\f(CWUNIX\-CONNECT:\fP\fP" با فرض اینکه یک سوکت دامنه یونیکس (UNIX domain socket) است، به آن متصل می‌شود\&. اگر وجود نداشته باشد، این یک خطا است؛ اگر یک سوکت دامنه یونیکس نباشد، این یک خطا است؛ اگر یک سوکت دامنه یونیکس باشد، اما هیچ فرایندی به آن گوش ندهد، این یک خطا است\&. .br گروه‌های گزینه: FD,SOCKET,NAMED,RETRY,UNIX .br ) گزینه‌های کاربردی: bind .br همچنین ببینید: UNIX\-LISTEN, UNIX\-SENDTO, TCP .IP .IP "\fB\f(CWUNIX\-LISTEN:\fP\fP" با استفاده از یک سوکت جریانی دامنه یونیکس (UNIX domain stream socket) روی گوش داده و اتصال را می‌پذیرد\&. اگر وجود داشته باشد و یک سوکت نباشد، این یک خطا است\&. اگر وجود داشته باشد و یک سوکت دامنه یونیکس باشد، مقیدسازی (bind) به این آدرس شکست می‌خورد (از گزینه unlink\-early استفاده کنید!)\&. توجه داشته باشید که باز کردن این آدرس معمولاً تا زمانی که یک کلاینت متصل شود مسدود می‌شود\&. از نسخه 1\&.4\&.3 برنامه socat به بعد، مدخل فایل‌سیستم هنگام بسته شدن این آدرس حذف می‌شود (اما گزینه unlink\-close را ببینید) (مثال)\&. .br گروه‌های گزینه: FD,SOCKET,NAMED,LISTEN,CHILD,RETRY,UNIX .br گزینه‌های کاربردی: fork, umask, mode, user, group, unlink\-early .br همچنین ببینید: UNIX\-CONNECT, UNIX\-RECVFROM, UNIX\-RECV, TCP\-LISTEN .IP .IP "\fB\f(CWUNIX\-SENDTO:\fP\fP" با سوکت همتای مشخص‌شده که توسط [] تعیین شده ارتباط برقرار می‌کند، با این فرض که یک سوکت دیتاگرام دامنه یونیکس است\&. بسته‌ها را تنها به آن سوکت همتا فرستاده و فقط از آن بسته دریافت می‌کند\&. لطفاً توجه داشته باشید که ممکن است مقیدسازی (bind) سوکت محلی به یک آدرس لازم باشد (مثلاً \f(CW/tmp/sock1\fP، که نباید از قبل وجود داشته باشد)\&. این نوع آدرس به‌خوبی با همتاهای آدرس socat از نوع UNIX\-RECVFROM و UNIX\-RECV کار می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,NAMED,UNIX .br گزینه‌های کاربردی: bind .br همچنین ببینید: UNIX\-RECVFROM, UNIX\-RECV, UNIX\-CONNECT, UDP\-SENDTO, IP\-SENDTO .IP .IP "\fB\f(CWUNIX\-RECVFROM:\fP\fP" یک سوکت دیتاگرام دامنه یونیکس [] ایجاد می‌کند\&. یک بسته دریافت کرده و ممکن است یک یا چند بسته پاسخ به آن همتا ارسال کند\&. این حالت به‌ویژه با گزینه fork کاربردی است که در آن هر بسته دریافتی \- از همتاهای دلخواه \- توسط زیرفرایند اختصاصی خودش پردازش می‌شود\&. این آدرس به‌خوبی با همتاهای آدرس UNIX\-SENDTO در socat کار می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,NAMED,CHILD,UNIX .br نکته مربوط به آدرس‌های RECVFROM را ببینید\&. .br گزینه‌های کاربردی: fork .br umask .br همچنین ببینید: UNIX\-SENDTO, UNIX\-RECV, UNIX\-LISTEN, UDP\-RECVFROM, IP\-RECVFROM .IP .IP "\fB\f(CWUNIX\-RECV:\fP\fP" یک سوکت دیتاگرام دامنه یونیکس [] ایجاد می‌کند\&. بسته‌ها را از چندین همتای نامشخص دریافت کرده و داده‌ها را با هم ادغام می‌کند\&. هیچ پاسخی امکان‌پذیر نیست، این یک آدرس فقط‌خواندنی است، گزینه‌های \-u و \-U، و آدرس‌های دوگانه را ببینید\&. این آدرس می‌تواند مثلاً توسط همتاهای آدرس UNIX\-SENDTO در socat مورد خطاب قرار گیرد\&. رفتاری شبیه به یک سرور syslog دارد\&. .br گروه‌های گزینه: FD,SOCKET,NAMED,UNIX .br گزینه‌های کاربردی: umask .br همچنین ببینید: UNIX\-SENDTO, UNIX\-RECVFROM, UNIX\-LISTEN, UDP\-RECV, IP\-RECV .IP .IP "\fB\f(CWUNIX\-CLIENT:\fP\fP" با سوکت همتای مشخص‌شده، که توسط [] تعریف شده، با این فرض که یک سوکت دامنه یونیکس است ارتباط برقرار می‌کند\&. ابتدا سعی می‌کند متصل شود و اگر ناموفق بود، فرض می‌کند که یک سوکت دیتاگرام است؛ بنابراین از هر دو نوع پشتیبانی می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,NAMED,UNIX .br گزینه‌های کاربردی: bind .br همچنین ببینید: UNIX\-CONNECT, UNIX\-SENDTO, GOPEN.IP .IP "\fB\f(CWVSOCK\-CONNECT::\fP\fP" یک اتصال جریانی (stream) مربوط به VSOCK را به [شناسه VSOCK cid] و [درگاه VSOCK] مشخص‌شده برقرار می‌کند\&. .br گروه‌های گزینه: FD,SOCKET,CHILD,RETRY .br گزینه‌های کاربردی: bind, connect\-timeout, retry, readbytes .br همچنین ببینید: VSOCK\-LISTEN, .IP .IP "\fB\f(CWVSOCK\-LISTEN:\fP\fP" روی [درگاه VSOCK] گوش فرا داده و یک اتصال VSOCK را می‌پذیرد\&. توجه داشته باشید که باز کردن این آدرس معمولاً تا زمان اتصال یک کلاینت مسدود می‌شود\&. .br گروه‌های گزینه: FD,SOCKET,LISTEN,CHILD,RETRY .br گزینه‌های کاربردی: fork, bind, max\-children, backlog, su, reuseaddr, retry .br همچنین ببینید: VSOCK\-CONNECT .IP .IP "\fB\f(CWABSTRACT\-CONNECT:\fP\fP" .IP "\fB\f(CWABSTRACT\-LISTEN:\fP\fP" .IP "\fB\f(CWABSTRACT\-SENDTO:\fP\fP" .IP "\fB\f(CWABSTRACT\-RECVFROM:\fP\fP" .IP "\fB\f(CWABSTRACT\-RECV:\fP\fP" .IP "\fB\f(CWABSTRACT\-CLIENT:\fP\fP" آدرس‌های ABSTRACT تقریباً با آدرس‌های UNIX مربوطه یکسان هستند، جز اینکه به سوکت‌های مبتنی بر سیستم فایل اشاره نمی‌کنند بلکه یک فضای آدرس دامنه UNIX جایگزین را هدف قرار می‌دهند\&. برای دستیابی به این منظور، رشته‌های آدرس سوکت در داخل به‌صورت پیش‌فرض با پیشوند \(dq\&\e0\(dq\& مقداردهی می‌شوند\&. این ویژگی (صرفاً؟) در Linux موجود است\&. گروه‌های گزینه همانند آدرس‌های UNIX مربوطه هستند، با این تفاوت که آدرس‌های ABSTRACT عضوی از گروه NAMED نیستند\&. .br گزینه‌های کاربردی: netns .PP .SH "گزینه‌های آدرس (ADDRESS OPTIONS)" .PP گزینه‌های آدرس را می‌توان روی مشخصات آدرس اعمال کرد تا روند باز کردن آدرس‌ها و ویژگی‌های کانال‌های داده حاصل تحت تأثیر قرار گیرند\&. .PP به دلایل فنی نمی‌توان هر گزینه‌ای را برای هر نوع آدرسی اعمال کرد؛ برای مثال، اعمال یک گزینه سوکت روی یک فایل معمولی با شکست مواجه خواهد شد\&. برای شناسایی بیشتر ترکیب‌های غیرقابل‌استفاده در همان ابتدای فاز باز کردن، مفهوم \fIگروه‌های گزینه\fP معرفی شده است\&. هر گزینه به یک یا چند گروه گزینه تعلق دارد\&. گزینه‌ها فقط می‌توانند با انواع آدرسی استفاده شوند که حداقل از یکی از گروه‌های گزینه آن‌ها پشتیبانی کنند (اما گزینه \-g را ببینید)\&. .PP گزینه‌های آدرس دارای انواع داده‌ای هستند که مقادیر آن‌ها باید با آن نوع مطابقت داشته باشد\&. هر گزینه آدرس تنها از یک کلیدواژه یا یک کلیدواژه به همراه \(dq\&=value\(dq\& تشکیل شده است، که در آن value باید با نوع داده گزینه سازگار باشد\&. برخی از گزینه‌های آدرس پارامترهای فراخوانی‌های سیستمی را دستکاری می‌کنند؛ برای مثال، گزینه sync پرچم \f(CWO_SYNC\fP را در فراخوانی \f(CWopen()\fP تنظیم می‌کند\&. گزینه‌های دیگر موجب یک فراخوانی سیستمی یا کتابخانه‌ای می‌شوند؛ برای مثال، با گزینه \(lqttl=value\(rq فراخوانی \f(CWsetsockopt(fd, SOL_IP, IP_TTL, value, sizeof(int))\fP اعمال می‌گردد\&. گزینه‌های دیگر متغیرهای داخلی \fBsocat\fP را تنظیم می‌کنند که در حین انتقال داده استفاده می‌شوند؛ برای مثال، \(lqcrnl\(rq موجب تبدیل صریح نویسه‌ها می‌شود\&. تعداد کمی از گزینه‌ها پیاده‌سازی‌های پیچیده‌تری دارند؛ برای مثال، su\-d (مخفف substuser\-delayed) برخی اطلاعات کاربر و گروه را جویا شده، آن‌ها را ذخیره می‌کند و بعداً پس از یک فراخوانی احتمالی \f(CWchroot()\fP اعمال می‌نماید\&. .PP اگر چندین گزینه برای یک آدرس مشخص شود، ترتیب آن‌ها در مشخصه آدرس (تقریباً) هیچ تأثیری بر ترتیب اجرا یا اعمال آن‌ها ندارد\&. در عوض، \fBsocat\fP دارای یک مدل درونی \fIفاز گزینه\fP است که سعی می‌کند گزینه‌ها را در یک ترتیب سودمند قرار دهد\&. برخی گزینه‌ها در اشکال متفاوتی وجود دارند (مانند unlink، unlink\-early، unlink\-late) تا زمان اجرای آن‌ها کنترل شود\&. .PP اگر یک گزینه بیش از یک بار در یک مشخصه آدرس تعیین شود، چه با مقادیر یکسان و چه متفاوت، نتیجه به نوع گزینه بستگی دارد\&. گزینه‌هایی که منجر به فراخوانی توابعی مانند \f(CWsetsockopt()\fP می‌شوند، باعث چندین بار فراخوانی خواهند شد\&. در مورد گزینه‌هایی که پارامترهایی را برای یک فراخوانی الزامی مانند \f(CWopen()\fP تعیین می‌کنند یا پرچم‌های داخلی را تنظیم می‌نمایند، مقدار آخرین رخداد گزینه مؤثر خواهد بود\&. .PP وجود یا معناشناسی بسیاری از گزینه‌ها به سیستم وابسته است\&. \fBSocat\fP معمولاً تلاش نمی‌کند تا ویژگی‌های غایب libc یا هسته را شبیه‌سازی کند، بلکه صرفاً یک رابط به سیستم زیرین ارائه می‌دهد\&. بنابراین، اگر یک سیستم‌عامل فاقد یک ویژگی باشد، گزینه مربوطه به سادگی در این پلتفرم در دسترس نخواهد بود\&. .PP بندهای زیر صرفاً گزینه‌های رایج‌تر آدرس را معرفی می‌کنند\&. برای یک مرجع جامع‌تر و یافتن اطلاعاتی در مورد نام‌های متعارف گزینه‌ها، نام‌های مستعار، فازهای گزینه و پلتفرم‌ها، فایل \fBxio\&.help\fP را ببینید\&. .br .br .PP .br .PP \fI\fBگروه گزینه FD\fP\fP .PP این گروه گزینه شامل گزینه‌هایی است که بر روی یک توصیف‌گر فایل به سبک UN*X اعمال می‌شوند، فارغ از اینکه چگونه ایجاد شده باشد\&. از آنجا که تمام انواع آدرس‌های فعلی \fBsocat\fP مبتنی بر توصیف‌گر فایل هستند، این گزینه‌ها می‌توانند بر روی هر آدرسی اعمال شوند\&. .br نکته: برخی از این گزینه‌ها همچنین عضو یک گروه گزینه دیگر هستند که سازوکار متفاوتی بدون استفاده از fd ارائه می‌دهد\&. برای این گزینه‌ها، بسته به نوع واقعی آدرس و گروه‌های گزینه آن مشخص می‌شود که کدام سازوکار استفاده گردد\&. سازوکار دوم (غیر مبتنی بر fd) در اولویت قرار دارد\&. .IP "\fB\f(CWcloexec[=]\fP\fP" پرچم \f(CWFD_CLOEXEC\fP را با فراخوانی سیستمی \f(CWfcntl()\fP روی مقدار تنظیم می‌کند\&. در صورت تنظیم، توصیف‌گر فایل در فراخوانی‌های خانواده توابع \f(CWexec()\fP بسته می‌شود\&. \fBSocat\fP به‌طور داخلی این پرچم را برای fdهایی که کنترل می‌کند مدیریت می‌نماید، بنابراین در بیشتر موارد نیازی به اعمال این گزینه نخواهد بود\&. .IP "\fB\f(CWsetlk[=]\fP\fP" تلاش می‌کند با استفاده از فراخوانی سیستمی \f(CWfcntl(fd, F_SETLK, \&.\&.\&.)\fP یک قفل نوشتن اختیاری (discretionary) بر روی کل فایل تنظیم کند\&. اگر فایل قبلاً قفل شده باشد، این فراخوانی منجر به بروز خطا می‌شود\&. در Linux، هنگامی که مجوزهای فایل برای گروه به شکل \(dq\&S\(dq\& باشد (g\-x,g+s) و سیستم فایل به‌صورت محلی با گزینه \(dq\&mand\(dq\& مانت شده باشد، این قفل اجباری (mandatory) خواهد بود، یعنی از باز کردن فایل توسط سایر فرآیندها جلوگیری می‌کند\&. .IP "\fB\f(CWsetlkw[=]\fP\fP" تلاش می‌کند با استفاده از فراخوانی سیستمی \f(CWfcntl(fd, F_SETLKW, \&.\&.\&.)\fP یک قفل نوشتن انتظاری اختیاری بر روی کل فایل تنظیم کند\&. اگر فایل قبلاً قفل شده باشد، این فراخوانی مسدود می‌شود\&. برای اطلاعات درباره اجباری کردن این قفل، گزینه setlk را ببینید\&. .IP "\fB\f(CWsetlk\-rd[=]\fP\fP" تلاش می‌کند با استفاده از فراخوانی سیستمی \f(CWfcntl(fd, F_SETLK, \&.\&.\&.)\fP یک قفل خواندن اختیاری بر روی کل فایل تنظیم کند\&. اگر فایل قبلاً دارای قفل نوشتن باشد، این فراخوانی منجر به خطا می‌شود\&. برای اطلاعات درباره اجباری کردن این قفل، گزینه setlk را ببینید\&. .IP "\fB\f(CWsetlkw\-rd[=]\fP\fP" تلاش می‌کند با استفاده از فراخوانی سیستمی \f(CWfcntl(fd, F_SETLKW, \&.\&.\&.)\fP یک قفل خواندن انتظاری اختیاری بر روی کل فایل تنظیم کند\&. اگر فایل قبلاً دارای قفل نوشتن باشد، این فراخوانی مسدود می‌شود\&. برای اطلاعات درباره اجباری کردن این قفل، گزینه setlk را ببینید\&. .IP "\fB\f(CWflock\-ex[=]\fP\fP" تلاش می‌کند با استفاده از فراخوانی سیستمی \f(CWflock(fd, LOCK_EX)\fP یک قفل مشورتی (advisory) انحصاری مسدودکننده بر روی فایل تنظیم کند\&. اگر فایل توسط فرآیند دیگری قفل شده باشد، \fBSocat\fP در این فراخوانی متوقف (معلق) می‌شود\&. .IP "\fB\f(CWflock\-ex\-nb[=]\fP\fP" تلاش می‌کند با استفاده از فراخوانی سیستمی \f(CWflock(fd, LOCK_EX|LOCK_NB)\fP یک قفل مشورتی انحصاری نامسدودکننده بر روی فایل تنظیم کند\&. اگر فایل از قبل قفل شده باشد، این گزینه منجر به بروز خطا می‌شود\&..IP "\fB\f(CWflock\-sh[=]\fP\fP" تلاش می‌کند با استفاده از فراخوان سیستمی \f(CWflock(fd, LOCK_SH)\fP یک قفل مشورتی اشتراکی انسدادی روی فایل برقرار کند\&. در صورتی که فایل توسط فرایند دیگری قفل شده باشد، \fBSocat\fP در این فراخوان معلق می‌ماند\&. .IP "\fB\f(CWflock\-sh\-nb[=]\fP\fP" تلاش می‌کند با استفاده از فراخوان سیستمی \f(CWflock(fd, LOCK_SH|LOCK_NB)\fP یک قفل مشورتی اشتراکی غیرانسدادی روی فایل برقرار کند\&. اگر فایل از قبل قفل شده باشد، این گزینه منجر به بروز خطا می‌شود\&. .IP "\fB\f(CWlock[=]\fP\fP" یک قفل انسدادی روی فایل تنظیم می‌کند\&. بسته به در دسترس بودن در بستر مربوطه، از سازوکار setlk یا flock استفاده می‌کند\&. اگر هر دو موجود باشند، گونهٔ POSIX یعنی (setlkw) به کار گرفته می‌شود\&. .IP "\fB\f(CWuser=\fP\fP" کاربر (مالک) جریان را تعیین می‌کند\&. اگر نشانی عضوی از گروه گزینه‌های NAMED باشد، \fBsocat\fP پس از باز کردن فایل یا مقید شدن (bind) به سوکت دامنهٔ UNIX، از فراخوان سیستمی \f(CWchown()\fP استفاده می‌کند (وضعیت رقابتی!)\&. در صورت عدم وجود مدخل سیستم‌فایل، \fBsocat\fP کاربر جریان را با استفاده از فراخوان سیستمی \f(CWfchown()\fP تعیین می‌کند\&. این فراخوان‌ها ممکن است به دسترسی ریشه (root) نیاز داشته باشند\&. .IP "\fB\f(CWuser\-late=\fP\fP" مالک fd را پس از باز کردن یا متصل کردن کانال، با استفاده از فراخوان سیستمی \f(CWfchown()\fP به تغییر می‌دهد\&. این گزینه فقط روی مدخل‌های سیستم‌فایل مفید است\&. .IP "\fB\f(CWgroup=\fP\fP" گروه جریان را تعیین می‌کند\&. اگر نشانی عضوی از گروه گزینه‌های NAMED باشد، \fBsocat\fP پس از باز کردن فایل یا مقید شدن (bind) به سوکت دامنهٔ UNIX، از فراخوان سیستمی \f(CWchown()\fP استفاده می‌کند (وضعیت رقابتی!)\&. در صورت عدم وجود مدخل سیستم‌فایل، \fBsocat\fP گروه جریان را با فراخوان سیستمی \f(CWfchown()\fP تعیین می‌کند\&. این فراخوان‌ها ممکن است نیازمند عضویت در گروه یا امتیازات ریشه (root) باشند\&. .IP "\fB\f(CWgroup\-late=\fP\fP" گروه fd را پس از باز کردن یا متصل کردن کانال، با استفاده از فراخوان سیستمی \f(CWfchown()\fP به تنظیم می‌کند\&. این گزینه فقط روی مدخل‌های سیستم‌فایل مفید است\&. .IP "\fB\f(CWmode=\fP\fP" حالت [از نوع mode_t] (مجوزهای دسترسی) جریان را تنظیم می‌کند\&. اگر نشانی عضوی از گروه گزینه‌های NAMED بوده و از فراخوان‌های \f(CWopen()\fP یا \f(CWcreat()\fP استفاده کند، این حالت همراه با آن‌ها اعمال می‌شود\&. اگر نشانی عضوی از گروه گزینه‌های NAMED باشد بدون آن‌که از این فراخوان‌های سیستمی استفاده کند، \fBsocat\fP پس از باز کردن مدخل سیستم‌فایل یا مقید شدن (bind) به سوکت دامنهٔ UNIX، از فراخوان سیستمی \f(CWchmod()\fP استفاده می‌کند (وضعیت رقابتی!)\&. در غیر این صورت، \fBsocat\fP حالت جریان را با استفاده از \f(CWfchmod()\fP تنظیم می‌کند که البته ممکن است هیچ اثری نداشته باشد\&. .br این فراخوان‌ها ممکن است نیازمند مالکیت فایل یا دسترسی ریشه باشند\&. .br نکته: این گزینه تنها می‌تواند مجوزهای حاصل از umask فرایند را محدودتر کند\&. برای سهل‌گیرانه‌تر کردن مجوزها گزینهٔ umask را ببینید\&. .IP "\fB\f(CWperm\-late=\fP\fP" مجوزهای دسترسی fd را پس از باز کردن یا متصل کردن کانال، با استفاده از فراخوان سیستمی \f(CWfchmod()\fP به مقدار [از نوع mode_t] تنظیم می‌کند\&. این گزینه فقط روی مدخل‌های سیستم‌فایل مفید است\&. .IP "\fB\f(CWappend[=]\fP\fP" همیشه داده‌ها را در انتهای واقعی فایل می‌نویسد\&. اگر نشانی عضوی از گروه گزینه‌های OPEN باشد، \fBsocat\fP پرچم \f(CWO_APPEND\fP را همراه با فراخوان سیستمی \f(CWopen()\fP به کار می‌برد (مثال)\&. در غیر این صورت، \fBsocat\fP فراخوان \f(CWfcntl(fd, F_SETFL, O_APPEND)\fP را اعمال می‌کند\&. .IP "\fB\f(CWnonblock[=]\fP\fP" تلاش می‌کند فایل را در حالت غیرانسدادی باز کرده یا استفاده کند\&. تنها اثرات آن این است که فراخوان \f(CWconnect()\fP برای نشانی‌های TCP مسدود نمی‌شود، و باز کردن یک لولهٔ نام‌گذاری‌شده (named pipe) برای خواندن مسدود نمی‌گردد\&. اگر نشانی عضوی از گروه گزینه‌های OPEN باشد، \fBsocat\fP از پرچم \f(CWO_NONBLOCK\fP همراه با فراخوان سیستمی \f(CWopen()\fP استفاده می‌کند\&. در غیر این صورت، \fBsocat\fP فراخوان \f(CWfcntl(fd, F_SETFL, O_NONBLOCK)\fP را اعمال می‌کند\&. .IP "\fB\f(CWbinary[=]\fP\fP" فایل را در حالت دودویی باز می‌کند تا از تبدیل‌های ضمنی پایان خط جلوگیری شود (Cygwin)\&. .IP "\fB\f(CWtext[=]\fP\fP" فایل را در حالت متنی باز می‌کند تا تبدیل‌های ضمنی پایان خط اعمال شوند (Cygwin)\&. .IP "\fB\f(CWnoinherit[=]\fP\fP" این فایل را در فرایند ایجادشده (spawned) باز نگه نمی‌دارد (Cygwin)\&. .IP "\fB\f(CWcool\-write[=]\fP\fP" هنگامی که نوشتن با EPIPE یا ECONNRESET ناموفق می‌شود آسان می‌گیرد و پیام را به جای سطح \fIerror\fP با سطح \fInotice\fP ثبت می‌کند\&. این کار از پر شدن فایل گزارش با پیام‌های خطای بی‌فایده جلوگیری می‌کند؛ به‌ویژه هنگامی که \fBsocat\fP به عنوان سرور یا پروکسی با حجم بالای داده استفاده می‌شود که در آن کلاینت‌ها اغلب اتصال را قطع می‌کنند\&. از این گزینه تنها به همراه گزینهٔ fork استفاده کنید، زیرا در غیر این صورت ممکن است باعث شود \fBsocat\fP حتی در صورت شکست، با کد 0 خارج شود\&. .br این گزینه منسوخ شده است، به جای آن استفاده از گزینهٔ children\-shutup را در نظر بگیرید\&. .IP "\fB\f(CWend\-close[=]\fP\fP" روش پایان دادن به اتصال (وابسته به نشانی) را صرفاً به بستن توصیف‌گرهای فایل تغییر می‌دهد\&. این گزینه زمانی مفید است که اتصال قرار است توسط فرایندهای دیگر مورد استفادهٔ مجدد قرار گیرد یا با آن‌ها به اشتراک گذاشته شود (مثال)\&. .br به‌طور معمول، اتصالات سوکت با \f(CWshutdown(2)\fP پایان می‌یابند که سوکت را حتی اگر بین چند فرایند به اشتراک گذاشته شده باشد خاتمه می‌دهد\&. \f(CWclose(2)\fP سوکت را از فرایند \(dq\&پیوندزدایی\(dq\& می‌کند اما تا زمانی که هنوز پیوندهایی از دیگر فرایندها وجود داشته باشد، آن را فعال نگه می‌دارد\&. .br به همین ترتیب، هنگامی که نشانی از نوع EXEC یا SYSTEM پایان می‌یابد، socat معمولاً زیرفرایند را صراحتاً می‌کشد (kill می‌کند)\&. با این گزینه، تنها توصیف‌گرهای فایل را خواهد بست\&. .IP "\fB\f(CWshut\-none[=]\fP\fP" روش قطع کردن بخش نوشتاری اتصال (وابسته به نشانی) را به گونه‌ای تغییر می‌دهد که کاری انجام ندهد\&. .IP "\fB\f(CWshut\-down[=]\fP\fP" روش قطع کردن بخش نوشتاری اتصال (وابسته به نشانی) را به shutdown(fd, SHUT_WR) تغییر می‌دهد\&. فقط برای سوکت‌ها کاربرد دارد\&. .IP "\fB\f(CWshut\-close[=]\fP\fP" روش قطع کردن بخش نوشتاری اتصال (وابسته به نشانی) را به close(fd) تغییر می‌دهد\&. .IP "\fB\f(CWshut\-null[=]\fP\fP" هنگامی که یک نشانی به EOF اشاره می‌کند، \fBsocat\fP یک بسته با اندازهٔ صفر به کانال نوشتاری نشانی دیگر ارسال می‌کند تا وضعیت EOF را منتقل کند\&. این قابلیت برای UDP و سایر پروتکل‌های دیتاگرام سودمند است\&. در برابر netcat و socat با گزینهٔ null\-eof آزمایش شده است\&. .IP "\fB\f(CWnull\-eof[=]\fP\fP" به‌طور معمول \fBsocat\fP بسته‌های خالی (با بار مفید اندازهٔ صفر) ورودی به سوکت‌های دیتاگرام را نادیده می‌گیرد تا در برابر پویش درگاه‌ها مقاومت کند\&. با این گزینه، \fBsocat\fP بسته‌های خالی دیتاگرام را به عنوان نشانگر EOF تفسیر می‌کند (گزینهٔ shut\-null را ببینید)\&. .IP "\fB\f(CWioctl\-void=\fP\fP" فراخوان \f(CWioctl()\fP را با مقدار request به عنوان آرگومان دوم و NULL به عنوان آرگومان سوم فراخوانی می‌کند\&. این گزینه امکان استفاده از ioctlهایی را فراهم می‌آورد که به صراحت در socat پیاده‌سازی نشده‌اند\&. .IP "\fB\f(CWioctl\-int=:\fP\fP" فراخوان \f(CWioctl()\fP را با مقدار request به عنوان آرگومان دوم و مقدار عدد صحیح به عنوان آرگومان سوم فراخوانی می‌کند\&. .IP "\fB\f(CWioctl\-intp=:\fP\fP" فراخوان \f(CWioctl()\fP را با مقدار request به عنوان آرگومان دوم و اشاره‌گری به مقدار عدد صحیح به عنوان آرگومان سوم فراخوانی می‌کند\&. .IP "\fB\f(CWioctl\-bin=:\fP\fP" فراخوان \f(CWioctl()\fP را با مقدار request به عنوان آرگومان دوم و اشاره‌گری به مقدار دادهٔ مشخص‌شده به عنوان آرگومان سوم فراخوانی می‌کند\&. این داده باید در قالب مشخص شود\&. .IP "\fB\f(CWioctl\-string=:\fP\fP" فراخوان \f(CWioctl()\fP را با مقدار request به عنوان آرگومان دوم و اشاره‌گری به رشتهٔ مشخص‌شده به عنوان آرگومان سوم فراخوانی می‌کند\&. قالب \&. .PP .br .PP \fI\fBگروه گزینه‌های NAMED\fP\fP.PP این گزینه‌ها روی مدخل‌های سامانه فایل عمل می‌کنند\&. .br لطفاً توجه داشته باشید که در نشانی‌های کلاینت دامنهٔ UNIX، این به معنی مدخل bind است، نه مدخل هدف/همتا (target/peer)\&. .br همچنین گزینه‌های user،‏ group و mode را ببینید\&. .PP .IP "\fB\f(CWuser\-early=\fP\fP" پیش از دسترسی به مدخل سامانه فایل، (مالک) آن را با استفاده از فراخوان سیستمی \f(CWchown()\fP تغییر می‌دهد\&. این فراخوان ممکن است به امتیاز ریشه (root) نیاز داشته باشد\&. .IP "\fB\f(CWgroup\-early=\fP\fP" پیش از دسترسی به مدخل سامانه فایل، آن را با استفاده از فراخوان سیستمی \f(CWchown()\fP تغییر می‌دهد\&. این فراخوان ممکن است به عضویت در گروه یا امتیاز ریشه نیاز داشته باشد\&. .IP "\fB\f(CWperm\-early=\fP\fP" پیش از دسترسی به مدخل سامانه فایل، [از نوع mode_t] آن را با استفاده از فراخوان سیستمی \f(CWchmod()\fP تغییر می‌دهد\&. این فراخوان ممکن است به مالکیت یا امتیاز ریشه نیاز داشته باشد\&. .IP "\fB\f(CWunlink\-early[=]\fP\fP" فایل را پیش از باز کردن آن و حتی پیش از اعمال user\-early و غیره حذف (unlink) می‌کند\&. .IP "\fB\f(CWunlink[=]\fP\fP" فایل را پیش از دسترسی به آن، اما پس از user\-early و غیره حذف (unlink) می‌کند\&. .IP "\fB\f(CWunlink\-late[=]\fP\fP" فایل را پس از باز کردن حذف (unlink) می‌کند تا پس از یک شرایط مسابقهٔ (race condition) کوتاه، برای سایر فرایندها غیرقابل دسترسی شود\&. .IP "\fB\f(CWunlink\-close[=]\fP\fP" حذف مدخل سامانه فایل نشانی را هنگام بستن آن کنترل می‌کند\&. برای لوله‌های نام‌گذاری‌شده (named pipes)، سوکت‌های دامنهٔ UNIX، و پیوندهای نمادین نشانی‌های pty، پیش‌فرض حذف کردن (1) است؛ برای فایل‌های ایجادشده، فایل‌های بازشده و فایل‌های بازشدهٔ عمومی پیش‌فرض نگه‌داشتن (0) است\&. تنظیم این گزینه روی 1 مدخل را حذف می‌کند و 0 آن را نگه می‌دارد\&. نبود مقدار به معنای 1 است\&. .PP .br .PP \fI\fBگروه گزینه‌های OPEN\fP\fP .PP گزینه‌های گروه OPEN امکان تنظیم پرچم‌ها را با فراخوان سیستمی \f(CWopen()\fP فراهم می‌کنند\&. برای نمونه، گزینهٔ `creat\(cq\& پرچم \f(CWO_CREAT\fP را تنظیم می‌کند\&. هنگامی که نشانیِ استفاده‌شده از \f(CWopen()\fP استفاده نمی‌کند (مانند STDIO)، فراخوان \f(CWfcntl(\&.\&.\&., F_SETFL, \&.\&.\&.)\fP به‌جای آن به کار می‌رود\&. .br همچنین گزینه‌های append و nonblock را ببینید\&. .IP "\fB\f(CWcreat[=]\fP\fP" در صورتی که فایل وجود نداشته باشد، آن را ایجاد می‌کند (نمونه)\&. .IP "\fB\f(CWdsync[=]\fP\fP" فراخوان‌های \f(CWwrite()\fP را تا زمانی که فراداده (metainfo) به‌صورت فیزیکی روی رسانه نوشته شود مسدود می‌کند\&. .IP "\fB\f(CWexcl[=]\fP\fP" همراه با گزینهٔ creat، اگر فایل از قبل موجود باشد یک خطا محسوب می‌شود\&. .IP "\fB\f(CWlargefile[=]\fP\fP" روی سامانه‌های ۳۲ بیتی، امکان فایلی بزرگ‌تر از 2^31 بایت را فراهم می‌کند\&. .IP "\fB\f(CWnoatime[=]\fP\fP" گزینهٔ O_NOATIME را تنظیم می‌کند تا خواندن‌ها مهرزمانی دسترسی را تغییر ندهند\&. .IP "\fB\f(CWnoctty[=]\fP\fP" این فایل را به پایانهٔ کنترلی تبدیل نمی‌کند\&. .IP "\fB\f(CWnofollow[=]\fP\fP" پیوندهای نمادین را دنبال نمی‌کند\&. .IP "\fB\f(CWnshare[=]\fP\fP" اجازهٔ هم‌رسانی این فایل را با سایر فرایندها نمی‌دهد\&. .IP "\fB\f(CWrshare[=]\fP\fP" به سایر فرایندها اجازه نمی‌دهد این فایل را برای نوشتن باز کنند\&. .IP "\fB\f(CWrsync[=]\fP\fP" فراخوان \f(CWwrite()\fP را تا زمانی که فراداده به‌صورت فیزیکی روی رسانه نوشته شود مسدود می‌کند\&. .IP "\fB\f(CWsync[=]\fP\fP" فراخوان \f(CWwrite()\fP را تا زمانی که داده‌ها به‌صورت فیزیکی روی رسانه نوشته شوند مسدود می‌کند\&. .IP "\fB\f(CWrdonly[=]\fP\fP" فایل را فقط برای خواندن باز می‌کند\&. .IP "\fB\f(CWwronly[=]\fP\fP" فایل را فقط برای نوشتن باز می‌کند\&. .IP "\fB\f(CWtrunc[=]\fP\fP" هنگام باز کردن فایل، اندازهٔ آن را به ۰ برش می‌دهد (truncate می‌کند)\&. .PP .br .PP \fI\fBگروه گزینه‌های REG و BLK\fP\fP .PP این گزینه‌ها معمولاً روی یک توصیف‌گر فایل UN*X اعمال می‌شوند، اما مفهوم آن‌ها تنها روی فایلی معنادار است که از دسترسی تصادفی (random access) پشتیبانی کند\&. .IP "\fB\f(CWseek=\fP\fP" فراخوان سیستمی \f(CWlseek(fd, , SEEK_SET)\fP (یا \f(CWlseek64\fP ) را اعمال می‌کند، و در نتیجه اشاره‌گر فایل را به‌صورت مطلق در موقعیت [از نوع off_t یا off64_t] قرار می‌دهد\&. لطفاً توجه داشته باشید که در صورت ذکر نشدن مقدار، مقدار پیش‌فرض ۱ است، نه ۰\&. .IP "\fB\f(CWseek\-cur=\fP\fP" فراخوان سیستمی \f(CWlseek(fd, , SEEK_CUR)\fP (یا \f(CWlseek64\fP ) را اعمال می‌کند، و بدین ترتیب اشاره‌گر فایل را به میزان بایت [از نوع off_t یا off64_t] نسبت به موقعیت فعلی‌اش (که معمولاً ۰ است) جابه‌جا می‌کند\&. لطفاً توجه داشته باشید که در صورت ذکر نشدن مقدار، مقدار پیش‌فرض ۱ است، نه ۰\&. .IP "\fB\f(CWseek\-end=\fP\fP" فراخوان سیستمی \f(CWlseek(fd, , SEEK_END)\fP (یا \f(CWlseek64\fP ) را اعمال می‌کند، و بدین ترتیب اشاره‌گر فایل را به میزان بایت [از نوع off_t یا off64_t] نسبت به انتهای فعلی فایل قرار می‌دهد\&. لطفاً توجه داشته باشید که در صورت ذکر نشدن مقدار، مقدار پیش‌فرض ۱ است، نه ۰\&. .IP "\fB\f(CWftruncate=\fP\fP" فراخوان سیستمی \f(CWftruncate(fd, )\fP (یا در صورت در دسترس بودن \f(CWftruncate64\fP ) را اعمال می‌کند، و بدین ترتیب فایل را در موقعیت [از نوع off_t یا off64_t] برش می‌دهد\&. لطفاً توجه داشته باشید که در صورت ذکر نشدن مقدار، مقدار پیش‌فرض ۱ است، نه ۰\&. .IP .IP "\fB\f(CWsecrm[=]\fP\fP" .IP "\fB\f(CWunrm[=]\fP\fP" .IP "\fB\f(CWcompr[=]\fP\fP" .IP "\fB\f(CWfs\-sync[=]\fP\fP" .IP "\fB\f(CWimmutable[=]\fP\fP" .IP "\fB\f(CWfs\-append[=]\fP\fP" .IP "\fB\f(CWnodump[=]\fP\fP" .IP "\fB\f(CWfs\-noatime[=]\fP\fP" .IP "\fB\f(CWjournal\-data[=]\fP\fP" .IP "\fB\f(CWnotail[=]\fP\fP" .IP "\fB\f(CWdirsync[=]\fP\fP" این گزینه‌ها ویژگی‌های غیراستاندارد فایل را در سیستم‌های عامل و سامانه‌های فایلی که از این قابلیت‌ها پشتیبانی می‌کنند تغییر می‌دهند، مانند لینوکس با ext2fs و جانشینان آن، xfs، یا reiserfs\&. برای کسب اطلاعات دربارهٔ این گزینه‌ها man 1 chattr را ببینید\&. لطفاً توجه داشته باشید که ممکن است بین ایجاد فایل و اعمال این گزینه‌ها یک شرایط مسابقه (race condition) وجود داشته باشد\&. .PP .br .PP \fI\fBگزینه‌های PIPE\fP\fP .PP این گزینه‌ها ممکن است روی لوله‌ها (pipes / fifos) اعمال شوند\&. .PP .IP "\fB\f(CWf\-setpipe\-sz=\fP\fP" .IP "\fB\f(CWsetpipe=\fP\fP" تعداد بایت‌هایی را که یک لوله می‌تواند بافر کند تنظیم می‌کنند\&. در جایی که بایت‌های بیشتری نوشته شود فرایند نویسنده ممکن است مسدود شود\&. هنگامی که در یک فراخوان \f(CWwrite()\fP تکی بایت‌های بیشتری نوشته شود، فرایند نویسنده مسدود می‌شود و ممکن است هرگز بازیابی نشود\&. .PP .br .PP \fI\fBگزینه‌های عمومی نشانی\fP\fP.PP این گزینه‌ها می‌توانند برای همهٔ انواع آدرس‌ها اِعمال شوند\&. آن‌ها برخی از ویژگی‌های فرآیند را تغییر می‌دهند که پس از باز کردن آدرس، به حالت اولیه بازگردانده می‌شوند\&. .PP .IP "\fB\f(CWchdir=\fP\fP" .IP "\fB\f(CWcd=\fP\fP" دایرکتوری کاری را تغییر می‌دهد\&. پس از باز کردن آدرس، فرآیند اصلی (master) به دایرکتوری کاری اولیه بازمی‌گردد\&. زیرفرآیندها این تنظیم موقت را به ارث می‌برند\&. .IP "\fB\f(CWumask=\fP\fP" مقدار umask فرآیند را پیش از باز کردن آدرس به [از نوع mode_t] تنظیم می‌کند\&. این گزینه هنگام ایجاد ورودی‌های فایل‌سیستم یا فراخوانی شل یا یک برنامه کاربردی است\&. معمولاً این مقدار به‌صورت یک عدد هشت‌هشتی (octal) با یک \(cq\&0\(cq پیشرو مشخص می‌شود\&. .br مقدار \f(CWumask\fP فرآیند توسط فرآیندهای فرزند به ارث برده می‌شود\&. .br نکته: umask یک مقدار وارونه است: ایجاد یک فایل با umask=0026 منتج به مجوزهای 0640 می‌شود\&. .PP .br .PP \fI\fBگروه گزینه‌های PROCESS\fP\fP .PP گزینه‌های این گروه به جای اینکه صرفاً روی یک کانال داده اثر بگذارند، ویژگی‌های فرآیند را تغییر می‌دهند\&. برای آدرس‌های EXEC و SYSTEM و برای آدرس‌های از نوع LISTEN و CONNECT همراه با گزینهٔ fork، این گزینه‌ها به جای فرآیند اصلی \fBsocat\fP بر فرآیندهای فرزند اِعمال می‌شوند\&. .IP "\fB\f(CWchroot=\fP\fP" پس از پردازش آدرس، یک عملیات \f(CWchroot()\fP به انجام می‌دهد (مثال)\&. این فراخوانی ممکن است به امتیازات ریشه (root) نیاز داشته باشد\&. .IP "\fB\f(CWchroot\-early=\fP\fP" پیش از باز کردن آدرس، یک عملیات \f(CWchroot()\fP به انجام می‌دهد\&. این فراخوانی ممکن است به امتیازات ریشه (root) نیاز داشته باشد\&. .IP "\fB\f(CWsetgid=\fP\fP" پس از پردازش آدرس، گروه اصلی () فرآیند را تغییر می‌دهد\&. این فراخوانی ممکن است به امتیازات ریشه (root) نیاز داشته باشد\&. لطفاً توجه داشته باشید که این گزینه سایر امتیازات مرتبط با گروه را لغو نمی‌کند\&. .IP "\fB\f(CWsetgid\-early=\fP\fP" مشابه setgid است اما پیش از باز کردن آدرس انجام می‌شود\&. .IP "\fB\f(CWsetuid=\fP\fP" پس از پردازش آدرس، کاربر ( یا مالک) فرآیند را تغییر می‌دهد\&. این فراخوانی ممکن است به امتیازات ریشه (root) نیاز داشته باشد\&. لطفاً توجه داشته باشید که این گزینه امتیازات مرتبط با گروه را لغو نمی‌کند\&. بررسی کنید که آیا گزینهٔ su برای نیازهای شما مناسب‌تر است یا خیر\&. .IP "\fB\f(CWsetuid\-early=\fP\fP" مشابه setuid است اما پیش از باز کردن آدرس انجام می‌شود\&. .IP "\fB\f(CWsu=\fP\fP" پس از پردازش آدرس، کاربر ( یا مالک) و گروه‌های فرآیند را تغییر می‌دهد (مثال)\&. این فراخوانی ممکن است به امتیازات ریشه (root) نیاز داشته باشد\&. .IP "\fB\f(CWsu\-d=\fP\fP" نام کوتاه برای \f(CWsubstuser\-delayed\fP\&. پس از پردازش آدرس، کاربر ( یا مالک) و گروه‌های فرآیند را تغییر می‌دهد (مثال)\&. کاربر و گروه‌های آن \fIپیش از\fP یک \f(CWchroot()\fP احتمالی واکشی می‌شوند\&. این فراخوانی ممکن است به امتیازات ریشه (root) نیاز داشته باشد\&. .IP "\fB\f(CWsetpgid=\fP\fP" فرآیند را به عضوی از گروه فرآیند مشخص‌شدهٔ تبدیل می‌کند\&. اگر مقداری داده نشود، یا اگر مقدار 0 یا 1 باشد، فرآیند رهبر یک گروه فرآیند جدید می‌شود\&. .IP "\fB\f(CWsetsid\fP\fP" فرآیند را به رهبر یک نشست (session) جدید تبدیل می‌کند (مثال)\&. .IP "\fB\f(CWnetns=\fP\fP" پیش از باز کردن آدرس تلاش می‌کند تا به فضای نام شبکهٔ (network namespace) مشخص‌شده تغییر وضعیت دهد\&. پس از باز کردن آدرس به فضای نام پیشین بازمی‌گردد (مثال با فورواردر TCP، مثال با اتصال شبکهٔ مجازی)\&. .br تنها در لینوکس؛ این گزینه نیازمند ریشه (root) است و آزمایشی محسوب می‌شود\&. .br .PP .br .PP \fI\fBگروه گزینه‌های READLINE\fP\fP .PP این گزینه‌ها برای آدرس‌های از نوع readline به کار می‌روند\&. .IP "\fB\f(CWhistory=\fP\fP" تاریخچه را از/به می‌خواند و می‌نویسد (مثال)\&. .IP "\fB\f(CWnoprompt\fP\fP" از نسخهٔ 1\&.4\&.0، socat به‌طور پیش‌فرض تلاش می‌کند با به خاطر سپردن آخرین خط ناقص خروجی، اعلانی (prompt) را تشخیص دهد که سپس به فراخوانی readline ارسال می‌شود\&. با این گزینه، socat اعلانی به readline ارسال نمی‌کند، بنابراین ویرایش خط در ستون نخست ترمینال آغاز می‌شود\&. .IP "\fB\f(CWnoecho=\fP\fP" یک الگوی باقاعده برای اعلان مشخص می‌کند که مانع از نمایش خط ورودی بعدی در صفحه و افزوده شدن آن به تاریخچه می‌شود\&. اعلان به‌صورت متنی تعریف می‌شود که پس از آخرین نویسهٔ خط جدید (newline) و پیش از تایپ یک نویسهٔ ورودی، در آدرس readline چاپ شده است\&. این الگو یک عبارت منظم است، به عنوان مثال \(dq\&^[Pp]assword:\&.*$\(dq\& یا \(dq\&([Uu]ser:|[Pp]assword:)\(dq\&\&. برای جزئیات به regex(7) مراجعه کنید\&. (مثال) .IP "\fB\f(CWprompt=\fP\fP" رشته را به‌عنوان اعلان (prompt) به تابع readline ارسال می‌کند\&. هنگام پیمایش در تاریخچه، readline این اعلان را چاپ می‌کند\&. اگر این رشته با یک اعلان ثابت که توسط برنامه‌ای تعاملی در آدرس دیگر socat صادر می‌شود مطابقت داشته باشد، می‌توان به ظاهر و رفتاری یکپارچه دست یافت\&. .PP .br .PP \fI\fBگروه گزینه‌های APPLICATION\fP\fP .PP این گروه شامل گزینه‌هایی است که در سطح داده عمل می‌کنند\&. توجه داشته باشید که این گزینه‌ها تنها بر داده‌های خام (\(dq\&raw\(dq\&) منتقل‌شده توسط socat اِعمال می‌شوند، و نه بر داده‌های پروتکل که توسط آدرس‌هایی مانند PROXY استفاده می‌شوند\&. .IP "\fB\f(CWcr\fP\fP" هنگام نوشتن/خواندن در این کانال، نویسهٔ پیش‌فرض پایان خط NL (\(cq\&\en\(cq\&، 0x0a) را به/از CR (\(cq\&\er\(cq\&، 0x0d) تبدیل می‌کند\&. .IP "\fB\f(CWcrnl\fP\fP" هنگام نوشتن/خواندن در این کانال، نویسهٔ پیش‌فرض پایان خط NL (\(cq\&\en\(cq\&، 0x0a) را به/از CRNL (\(dq\&\er\en\(dq\&، 0x0d0a) تبدیل می‌کند (مثال)\&. نکته: socat به‌سادگی تمامی نویسه‌های CR را حذف می‌کند\&. .IP "\fB\f(CWignoreeof\fP\fP" هنگامی که EOF در این کانال رخ می‌دهد، \fBsocat\fP آن را نادیده گرفته و تلاش می‌کند داده‌های بیشتری بخواند (مانند \(dq\&tail \-f\(dq\&) (مثال)\&. .IP "\fB\f(CWreadbytes=\fP\fP" \fBsocat\fP تنها همین تعداد بایت را از این آدرس می‌خواند (آدرس تنها این مقدار بایت را برای انتقال فراهم کرده و پس از آن وانمود می‌کند به EOF رسیده است)\&. باید بزرگ‌تر از 0 باشد\&. .IP "\fB\f(CWlockfile=\fP\fP" اگر lockfile وجود داشته باشد، با خطا خارج می‌شود\&. اگر lockfile وجود نداشته باشد، آن را ایجاد کرده و ادامه می‌دهد، و در هنگام خروج lockfile را حذف (unlink) می‌کند\&. .IP "\fB\f(CWwaitlock=\fP\fP" اگر lockfile وجود داشته باشد، تا زمان ناپدید شدن آن منتظر می‌ماند\&. زمانی که lockfile وجود نداشته باشد، آن را ایجاد کرده و ادامه می‌دهد، و در هنگام خروج lockfile را حذف (unlink) می‌کند\&. .IP "\fB\f(CWescape=\fP\fP" کد عددی نویسه‌ای را مشخص می‌کند که باعث تحریک EOF در جریان ورودی می‌شود\&. این گزینه در ترمینال در حالت خام (raw mode) مفید است (مثال)\&. .PP .br .PP \fI\fBگروه گزینه‌های SOCKET\fP\fP .PP این گزینه‌ها برای همهٔ انواع سوکت‌ها، به عنوان مثال IP یا دامنهٔ UNIX در نظر گرفته شده‌اند\&. بیشتر آن‌ها با یک فراخوانی \f(CWsetsockopt()\fP اِعمال می‌شوند\&. .IP "\fB\f(CWbind=\fP\fP" با استفاده از فراخوانی سیستمی \f(CWbind()\fP سوکت را به نشانی سوکت داده‌شده مقید (bind) می‌کند\&. ساختار به دامنهٔ سوکت بستگی دارد: در IP4 و IP6 به شکل [hostname|hostaddress][:(service|port)] مجاز است (مثال)، و در VSOCK به شکل [cid][:(port)] مجاز است\&. .br همچنین ببینید: unix\-bind\-tempname .IP "\fB\f(CWconnect\-timeout=\fP\fP" تلاش برای برقراری اتصال را پس از [از نوع timeval] با وضعیت خطا لغو می‌کند\&. .IP "\fB\f(CWso\-bindtodevice=\fP\fP" سوکت را به داده‌شده مقید می‌کند\&. این گزینه ممکن است به امتیازات ریشه (root) نیاز داشته باشد\&. .IP "\fB\f(CWbroadcast\fP\fP" برای سوکت‌های دیتاگرام، ارسال به آدرس‌های برودکست (پخش همگانی) و دریافت بسته‌های آدرس‌دهی‌شده به آدرس‌های برودکست را امکان‌پذیر می‌سازد\&. .IP "\fB\f(CWdebug\fP\fP" اشکال‌زدایی (debugging) سوکت را فعال می‌کند\&. .IP "\fB\f(CWdontroute\fP\fP" فقط با همتایانی که مستقیماً متصل هستند ارتباط برقرار می‌کند و از مسیریاب‌ها (روترها) استفاده نمی‌کند\&. .IP "\fB\f(CWkeepalive\fP\fP" ارسال پیام‌های نگه‌داری اتصال (keepalive) را روی سوکت فعال می‌کند\&. .IP "\fB\f(CWlinger=\fP\fP" عملیات \f(CWshutdown()\fP یا \f(CWclose()\fP را تا زمان اتمام انتقال داده‌ها یا سپری شدن زمان انتظار مشخص‌شده [از نوع int] مسدود می‌کند (بلوکه می‌کند)\&..IP "\fB\f(CWoobinline\fP\fP" داده‌های خارج از باند (out\-of\-band) را در جریان داده‌های ورودی قرار می‌دهد\&. .IP "\fB\f(CWpriority=\fP\fP" مقدار [] تعریف‌شده توسط پروتکل را برای بسته‌های خروجی تنظیم می‌کند\&. .IP "\fB\f(CWrcvbuf=\fP\fP" اندازه بافر دریافت را پس از فراخوانی \f(CWsocket()\fP روی [int] تنظیم می‌کند\&. در سوکت‌های TCP، این مقدار متناظر با بیشینه اندازه پنجره (window size) سوکت است\&. .IP "\fB\f(CWrcvbuf\-late=\fP\fP" اندازه بافر دریافت را هنگامی که سوکت از پیش متصل شده است روی [int] تنظیم می‌کند\&. در سوکت‌های TCP، این مقدار متناظر با بیشینه اندازه پنجره سوکت است\&. .IP "\fB\f(CWso\-rcvtimeo=