כיצד להחליף נתונים ברשת באמצעות דלפי

מכל המרכיבים ש דלפי מספקת לתמיכה ביישומים שמחליפים נתונים ברשת (אינטרנט, אינטראנט ומקומי), שניים מהנפוצים ביותר הם TServerSocket ו TClientSocketששניהם מיועדים לתמוך בפונקציות קריאה וכתיבה באמצעות חיבור TCP / IP.

רכיבי שקע ווינסוק ודלפי

Sockets Windows (Winsock) מספק ממשק פתוח לתכנות רשת תחת מערכת ההפעלה Windows. הוא מציע מערך של פונקציות, מבני נתונים ופרמטרים קשורים הנדרשים כדי לגשת לשירותי הרשת של כל ערימות פרוטוקול. ווינסוק פועלת כקשר בין יישומי רשת לבין ערימות פרוטוקול הבסיסיות.

רכיבי שקעי דלפי (עטיפות ל- Winsock) מייעלים את היצירה של יישומים שמתקשרים עם מערכות אחרות באמצעות TCP / IP ופרוטוקולים קשורים. עם שקעים, אתה יכול לקרוא ולכתוב חיבורים למכונות אחרות מבלי לדאוג לפרטי תוכנת הרשת הבסיסית.

לוח האינטרנט בסרגל הכלים של רכיבי דלפי מארח את TServerSocket ו TClientSocket רכיבים כמו גם TcpClient, TcpServer, ו TUdpSocket.

כדי להתחיל חיבור שקע באמצעות רכיב שקע, עליך לציין מארח ויציאה. בכללי, מנחה מציין כינוי עבור כתובת ה- IP של מערכת השרת; נמל מציין את מספר הזיהוי המזהה את חיבור שקע השרת.

תוכנית פשוטה בכיוון אחד לשליחת טקסט

instagram viewer

כדי לבנות דוגמה פשוטה באמצעות רכיבי השקע המסופקים על ידי דלפי, צור שתי טפסים - אחד לשרת ואחד למחשב הלקוח. הרעיון הוא לאפשר ללקוחות לשלוח כמה נתונים טקסטואליים לשרת.

כדי להתחיל, פתח את דלפי פעמיים, צור פרויקט אחד ליישום השרת ואחד עבור הלקוח.

בצד השרת:

בטופס, הכנס רכיב TServerSocket אחד ורכיב TMemo אחד. בתוך ה אירוע OnCreate עבור הטופס, הוסף את הקוד הבא:

תהליך TForm1.FormCreate (שולח: TObject);
התחל
ServerSocket1.Port: = 23;
ServerSocket1.Active: = נכון;
סוף;

ה OnClose האירוע צריך להכיל:

תהליך TForm1.FormClose
(שולח: נושא; var פעולה: TCloseAction);
התחל
ServerSocket1.Active: = שקר;
סוף;

צד הלקוח:

ליישום הלקוח, הוסף טופס רכיב TClientSocket, TEdit ו- TButton. הכנס את הקוד הבא עבור הלקוח:

תהליך TForm1.FormCreate (שולח: TObject);
התחל
ClientSocket1.Port: = 23;
// כתובת TCP / IP מקומית של השרת
ClientSocket1.Host: = '192.168.167.12';
ClientSocket1.Active: = נכון;
סוף;
תהליך TForm1.FormClose (שולח: TObject; var פעולה: TCloseAction);
התחל
ClientSocket1.Active: = שקר;
סוף;
תהליך TForm1.Button1Click (שולח: TObject);
התחלה ClientSocket1.Active לאחר מכן
ClientSocket1.Socket. SendText (Edit1.Text);
סוף;

הקוד די מתאר את עצמו: כאשר לקוח לוחץ על כפתור, הטקסט שצוין בתוך רכיב Edit1 יישלח לשרת עם פורט וכתובת מארח שצוינו.

חזרה לשרת:

הנגיעה הסופית במדגם זה היא לספק פונקציה לשרת "לראות" את הנתונים שהלקוח שולח. האירוע בו אנו מעוניינים הוא OnClientRead - הוא מתרחש כאשר שקע השרת צריך לקרוא מידע משקע לקוח.

תהליך TForm1.ServerSocket1ClientRead (שולח: TObject;
שקע: TCustomWinSocket);
התחל
Memo1.Lines. הוסף (שקע. קבלת טקסט);
סוף;

כאשר יותר מלקוח אחד שולח נתונים לשרת, תצטרך עוד קצת כדי לקוד:

תהליך TForm1.ServerSocket1ClientRead (שולח: TObject;
שקע: TCustomWinSocket);
var
i: מספר שלם;
sRec: מחרוזת;
מתחיל i: = 0 ל שרת. שקע. ActiveConnections-1 dobeginwith שרת. שקע. חיבורים [i] dobegin
sRec: = קבלת טקסט;
אם התחבר '' אז התחיל
Memo1.Lines. הוסף (RemoteAddress + 'שולח:');
Memo1.Lines. הוסף (sRecr);
סוף;
סוף;
סוף;
סוף;

כאשר השרת קורא מידע משקע לקוח, הוא מוסיף את הטקסט לרכיב ה- Memo; גם הטקסט וגם הכתובת RemoteAddress מתווספים, כך שתדעו איזה לקוח שלח את המידע. ביישומים מתוחכמים יותר, כינויים לכתובות IP ידועות יכולים לשמש תחליף.

לפרויקט מורכב יותר המשתמש ברכיבים אלה, חקור את דלפי> הדגמות> אינטרנט> צ'אט פרויקט. זהו יישום צ'ט רשת פשוט המשתמש בטופס אחד (פרויקט) הן לשרת והן ללקוח.