הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   עזרה SERVER בשפת C (https://hosts.co.il/forums/showthread.php?t=86479)

FreshServ.Net 28-11-10 17:16

עזרה SERVER בשפת C
 
מה נשמע חבר'ה?

אני מחפש הכוונות / פתרונות לבנייה של SERVER בשפת C.

המטרה:

בניית SERVER שמקבל CONNECTIONS ומטפל בהם. הSERVER אמור להיות מסוגל לקבל CONNECTIONS רבים שיעבדו בו"ז (כולל קלט - פלט). לדוגמא, התחבר CLIENT, יקפיץ לי הודעה מה אני רוצה לעשות איתו ובו"ז אם מתחבר CLIENT חדש, יקפיץ לי הודעה גם לגביו.

פתרונות שניסיתי:
1. יצירת THREAD חדש לכל התחברות - לא עובד טוב כיוון שאי אפשר שיהיו (עד כמה שאני יודע) THREADיים שעובדים במקביל ולכולם פתוח CONSOLE לקלט / פלט עצמאי.
2. העברתי את הפונקציה שמטפלת ב CLIENT (לכולם אותה פונקציה) לPROCESS אחר ועשיתי שבכל התחברות נוצר PROCESS שמועבר אליו כפרמטר ה SOCKET DESCRIPTOR.

הבעיה:
1. בפתרון השני, עם יצירת הPROCESS, הוא לא מצליח לשלוח מידע דרך הSOCKET (כאילו אין SOCKET פתוח, הוא מתייחס ל SOCKET DESCRIPTOR בתור INT רגיל - ERROR 10038).
2. המשמעות היא יצירת PROCESS חדש לכל התחברות (לא נכון מבחינת ניהול משאבים).


חיפשתי בגוגל, מלא! על יצירת MULTI-CONNECTION SERVER עבור מ.הפעלה WINDOWS בשפת C ולא מצאתי משהו שמנהל בו"ז כמה CLIENTS ומקבל קלט מהמשתמש.


תודה לעוזרים!

yonatan 28-11-10 17:20

http://www.securityfocus.com/tools/139
זה אולי יעזור?

FreshServ.Net 28-11-10 17:36

ציטוט:

נכתב במקור על ידי yonatan (פרסם 787377)
http://www.securityfocus.com/tools/139
זה אולי יעזור?

NETCAT הוא בעצם סוג של תווך להעברת מידע (כידוע לי, מקורו בLINUX והותאם לWINDOWS). בדומה, אני יכול לפתוח TUNNEL מוצפן לזרוק אליו את המידע ולהעביר הכל דרכו.

כאן, יש לי תווך - עבודה עם SOCKETיים.

טעיתי במשהו? תודה על העזרה!

yonatan 28-11-10 17:43

ציטוט:

נכתב במקור על ידי FreshServ.Net (פרסם 787378)
NETCAT הוא בעצם סוג של תווך להעברת מידע (כידוע לי, מקורו בLINUX והותאם לWINDOWS). בדומה, אני יכול לפתוח TUNNEL מוצפן לזרוק אליו את המידע ולהעביר הכל דרכו.

כאן, יש לי תווך - עבודה עם SOCKETיים.

טעיתי במשהו? תודה על העזרה!

זה מטפל לך בעניין של הסוקטים וה SESSION בלי להתעסק יותר מידי...
השאלה מה אתה מנסה לעשות ...

FreshServ.Net 28-11-10 18:16

ציטוט:

נכתב במקור על ידי yonatan (פרסם 787379)
זה מטפל לך בעניין של הסוקטים וה SESSION בלי להתעסק יותר מידי...
השאלה מה אתה מנסה לעשות ...

יש לי CLIENTS על השרתים שלי. אני רוצה לבנות SERVER שיקבל מהם קבצים.

לשם הדגמה, יש לך 20 שרתים, בכל אחד קובץ גיבוי, אני רוצה שאחת לX זמן הם יתחברו לSERVER וישלחו לו את הקבצים (כאשר בכל פעם שCLIENT מתחבר קופץ לי הודעה מה אני רוצה לעשות איתו - האם להוריד את הקובץ או לא להוריד, היוזר, אני, מחליט אם כן או לא).

נכון, זה לא חכם במיוחד לעשות את זה ב C, יש חלופות הרבה יותר קלות, אבל המטרה זה ללמוד איך עושים את זה ב C.

את החלק של העברת הקובץ כבר רשמתי, הבעיה זה הטיפול בהתחברויות במקביל.

yonatan 28-11-10 18:32

נשמע לי כמו עבודה של 2 דקות ב BASH ולכלים שכבר קיימים במערכת.
NETCAT יעשה לך את העבודה של החיבורים בלי בעיה , רק תדאג להריץ אותו דרך SSH TUNNEL כי NETCAT הוא PLAIN TEXT וזה זולג ...

אגב למה לתת ל CLIENT לצלצל הביתה ל SERVER ?
אם CLIENT לא תקין איך תדע ?, הרי ה SERVER ישאל אותך שאלות רק במקרה שכן יש חיבור....

*עריכה*

אמרת WINDOWS ..
יש BASH
http://www.cygwin.com/

:)


כל הזמנים הם GMT +2. הזמן כעת הוא 06:50.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ