socket programming
|
2012-06-23, 12:02 PM,
ارسال : #1
|
|||
|
|||
socket programming
سلام
می خوام روی اوبونتو یک برنامه سرور بنویسم که پورتی را باز کنه و اطلاعات را با کلاینت رد و بدل کنه ... توی ویندوز مشکلی ندارم ، اما توی لینوکس نمیدونم باید چکار کنم ! باید از صفر برنامه را بنویسم که پورت را باز کنه و بقیه کار ها یا نه ؟ آخه توی یک مقاله نوشته بود که از xinetd باید استفاده کرد لطفا راهنمایی کنید که باید برنامه را کامل بنویسم که پورت را باز کنه یا چیزی شبیه xinetd هست که باید استفاده کنم ؟ تا جایی که خوندم این xinetd میاد درخواست های هر پورت را به نرم افزار مربوطه انتقال میده و ... مرسی |
|||
2012-06-23, 04:44 PM,
ارسال : #2
|
|||
|
|||
Re: socket programming
کار xinetd اینه که سرور شما همیشه اجرا نباشه و تنها وقتی یک برنامهای از اون پورت میخواد استفاده کنه برنامه سرور رو اجرا بکنه. (برای مصرف کمتر حافظه و سرعت بیشتر کلی سیستم).
راه درست اینه که برنامه رو مستقل بنویسید، بهترین راهنمایی که من برای C دیدم اینه: لینک اگر هم بخواید با xinetd بنویسید، این رو بخونید: لینک اکنون در ubuntu.ir با نام کاربری nixoeen فعال هستم. وبسایت شخصی من |
|||
2012-06-23, 04:50 PM,
ارسال : #3
|
|||
|
|||
Re: socket programming
مرسی
پس باید خودم یک برنامه از صفر بنویسم لینکی که برای C دادید را نگاه نکردم هنوز اما چون خودم قرار بود با C بنویسم یکم درموردش سرچ کردم و یک برنامه هم نوشتم ، فقط نمیدونم که چجوری این برنامه را دمون کنم ؟! بصورت سرویس بنویسمش که قبل از لاگین کردن هم اجرا بشه و همیشه اجرا بشه و دیگر مزایای سرویس ... سوال دیگه اینکه الان برنامه من مالتی تیرد نیست ، یعنی در هر زمان فقط یک کلاینت میتونه به سرور وصل بشه ، من باید برنامه را بصورت مالتی تیرد بنویسم یا نه وقتی برنامه یک دمون بشه این مشکل حل میشه ؟ مرسی |
|||
2012-06-23, 05:38 PM,
ارسال : #4
|
|||
|
|||
Re: socket programming
توی Debian میتونید از start-stop-daemon استفاده کنید. تنها کافیه اون برنامه در Background اجرا بشه.
برای رسیدگی به چندین کاربر روشهای مختلفی از جمله Multi Threading یا Fork وجود داره. پیشنهاد میکنم این مقاله رو در مورد epoll بخونید: لینک اکنون در ubuntu.ir با نام کاربری nixoeen فعال هستم. وبسایت شخصی من |
|||
2012-06-23, 05:52 PM,
ارسال : #5
|
|||
|
|||
Re: socket programming
از اوبونتو سرور استفاده می کنم
لینکی که دادید باز نمیشه پس برنامه من باید کامل باشه و مولتی تیرد هم باشه بعد بصورت دمون دربیارمش ؟ برای دمون این مقاله را خوندم : http://www.netzmafia.de/skripten/unix/li...howto.html باید بر اساس همین مقاله پیش برم ؟ مرسی |
|||
2012-06-23, 07:46 PM,
ارسال : #6
|
|||
|
|||
Re: socket programming
سایت باز شد مشکل از من بود
|
|||
2012-06-24, 11:32 AM,
ارسال : #7
|
|||
|
|||
Re: socket programming
برنامه تقریبا درست شد
یک برنامه که یک پورت را باز می کنه و منتظر کلاینت هست تا اطلاعات را با کلاینت رد و بدل کنه ... حالا می خوام این برنامه بصورت سرویس اجرا بشه یکم سرچ کردم اما یک daemon هست و یک service ! مثل اینکه این دو با هم فرق می کنن ! من باید دنبال سرویس باشم یا دمون ؟ اصلا فرق این دو در چی هست ؟ مرسی |
|||
2012-06-24, 05:07 PM,
ارسال : #8
|
|||
|
|||
Re: socket programming
هر برنامهای که در Background اجرا بشه Daemon نام داره.
برای اون هم باید از start-stop-daemon استفاده کنید. اکنون در ubuntu.ir با نام کاربری nixoeen فعال هستم. وبسایت شخصی من |
|||
2012-06-24, 05:26 PM,
ارسال : #9
|
|||
|
|||
Re: socket programming
مرسی
بر اساس همون لینکی که گفتم برنامه را بصورت Daemon درآوردم با استفاده از fork... دمون را چجوری به سرویس تبدیل کنم ؟ start-stop-daemon وقتی برنامه اجرا نیست که نمیتونه برنامه را اجرا کنه ! موقع stop کردن چه بلایی سر برنامه میاد ؟ کلا برنامه را KILL میکنه ؟ نمیشه از داخل برنامه تشخیص بدم و مثلا فایل هایی که باز کردم رو ببندم و لاگ بندازم و ... ؟؟ واسه اینکه دمون خودکار با بوت شدن سیستم قبل از لاگین کردن مثل سرویس اجرا بشه باید چکار کرد ؟ مرسی |
|||
2012-06-25, 07:40 AM,
ارسال : #10
|
|||
|
|||
Re: socket programming
تقریبا یک دمون و سرویس نوشتم که استارت و استاپ و ری استارت داره و موقع بالا اومدن لینوکس قبل از لاگین هم اجرا میشه و عملا مثل بقیه سرویس های لینوکس هست ..
حالا یک سوال دیگه ! چجوری میشه دسترسی های این سرویس یا در اصل دسترسی های اون دمون را محدود کرد ؟! مثلا به فلان فایل دسترسی نداشته باشه ، به بعضی از دستورات سیستمی دسترسی نداشته باشه و .. مرسی |
|||
|