الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

بروتكول ABP شرح و سمليشن بلغة السي

بدأه the0star0 في 28 مارس 2010 · 0 رد · 1,017 مشاهدة · في نظام تشغيل Unix & Linux
مشاركة: واتساب X فيسبوك تيليجرام
#1

بروتكول ABP باستخدام التوصل خلال pipe (البي اي بي اة يكونن عبارة عن ملفات تستخدم لتبادل المعلومات بين العمليات التي تحصل في الكمبيوتر)(مثال على البي اي بي اة عندما نقوم بتحويل النتائج من احد الاوامر في نظام اليونكس الى احداى الملفات مثل ls >file out put هنا نتائج الامر تتحول الى الملف المحدد وبعد ذلك نستخدم نفس الملف لعمل عملية اخرى مثل الطباعة او البحث بواسطة grep )(مثال اخر الامر ls | grep filename الامر السابق يعمل فلترة يعني تنقية للنتائج ويعرض النتائح التى نريدها بس (يقوم بارسال نتائج الامر ls الى ملف البي اي بي اة ويقوم الامر grep باخذ نتائج الامر ls من البي اي بي اة ويقوم بعمل التنقية واظهار النتائج المطلوبة) )

البي اي بي اة تقوم با السماح بالتواصل بين عمليتان بالنظام اليونكس ,ABP (alternating bit protocol) يكون مرسل للبيانات البسيطة التى تكون مفقودة اثنا الارسال ,كل رسالة من أ الى ب تحتوي على جزئين البيانات و قيمة من البايت (1او 0) تسمى التاج او الملصق كوبالطرف الاخر ب يرسل الى أ رسالة تاكيد acknowledgement ما مع صفر او واحد ack0 or ack1 وبعد ذلك يقوم الطرف أ بارسال الرسالة بشكل مستمر الى ان يستقبل رسالة التاكيد من الطرف ب ثم يقوم الطرف أ بارسال الرسالة التالية

عندما يستقبل ب رسالة المفقودة وتحتوي على الصفر يقوم الطرف ب بارسال بارسال تاكيد من نوع صفر الى ان يستقبل رسالة غير صالحة مع الرقم 0 يقوم بارسال رسالة تاكيد من النوع 1 .

بالمرفقات يوجد برنامجين بلغة السي

قبل تشغيل البرنامجين يجب انشاء pipe باستخدام الاوامر التالية

mkfifo pipe1

mkfifo pipe2

receiver.c

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>
#include <sys/stat.h>
#include <fcntl.h>

//receiver

int main ()

{
char tag;
int fd1, fd2;
fd1 = open ( "pipe1", O_RDONLY );
fd2 = open ("pipe2", O_WRONLY);

char buf [100];
int p;

while(1) {
read ( fd1, buf, 100 );
p=strlen (buf);
printf ( "%s \n", buf );
tag = buf [p-1];
write (fd2, &tag, 1);
}

close (fd1);
close (fd2);
return 0;
}


sender.c

#include <stdio.h>
# include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>

// sender

char * phrase = "Stuff this in your pipe and smoke it";

int main ()

{ int fd1, fd2;
char tag;
fd1 = open ( "pipe1", O_WRONLY );
fd2 = open ("pipe2", O_RDONLY);
int i;
for(i=0 ; i < strlen (phrase); i+=3) {
write (fd1, phrase+i, 3);
read (fd2, &tag, 1);
}
close (fd1);
close(fd2);
return 0;
}

في المرفقات ملف تاكستي بنفس الشي المكتوب بالاعلى

protocol.txt

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 28 مارس 2010 في 17:38 — السبب: إضافة وسم الكود

1

مواضيع مشابهة