انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: dr-solomons در 13 مهر 1388، 09:42 قظ
-
با سلام
عملكرد تابع setsockopt با فرم كلي زير چيست؟
ميدانم كه دستكاري موارد قابل تنظيم تابع socket است (بيش از اين)
flag = 1;
setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(flag));
عملكرد تابع poptGetContext و poptGetNextOpt چيست؟
كد زير بهتر فرم اين تابع را نمايش مي دهد
char c;
poptContext optCon;
struct poptOption optionsTable[] = {
{ "server", 's', POPT_ARG_STRING, &server_string, 0,
"server name", "name|IP" },
{ "port", 'p', POPT_ARG_INT, &port, 0,
"server port number", "port" },
POPT_AUTOHELP
{ NULL, 0, 0, NULL, 0 }
};
optCon = poptGetContext("forwarder", argc, (const char **)argv,
optionsTable, 0);
while ((c = poptGetNextOpt(optCon)) >= 0);
if (c < -1) {
/* an error occurred during option processing */
fprintf(stderr, "%s: %s\n",
poptBadOption(optCon, POPT_BADOPTION_NOALIAS),
poptStrerror(c));
exit(1);
}
چرا while فقط يك خط است؟
با تشكر فراوان
-
سلام
setsocketopt:
وقتی یک socket تو برنامه تعریف میشه، به صورت پیش فرض اندازه های بافر های ارسال و دریافت مربوط به این socket بزرگ است. برای تنظیم اندازه های این بافر ها به اندازه دلخواه از این تابع استفاده میشود.
poptGetContext و poptGetNextOpt :
این توابع به منظور تجزیه آرگومان های برنامه مورد استفاه قرار میگیرند.
poptGetContext:
محتوایی است که بر اساس آن آرگو مان ها تجزیه میشوند.
دلیل استفاده از while این است که، تمامی آرگومان ها، تا انتها بررسی شوند تا به محتوای مورد نظر برسد، در صورتیکه که به انتها رسید و چیزی نبود، خروجی -۱ میشود.
-
با تشكر فراوان از شما دوست عزيز