كائن C بسيط جدًا يغلف واجهة برمجة تطبيقات مقبس BSD لتوفير تجريد زوج مأخذ توصيل UDP. لنفترض بشكل أساسي أن لديك نقطتي نهاية معروفتين تحتاجان إلى التحدث مع بعضهما البعض عبر UDP. أنت تعرف المنفذ الذي تستقبله وعنوان/منفذ نقطة النهاية الأخرى. يمكنك تحديد كائن زوج UDP الذي يمثل نقطة النهاية الخاصة بك وإرسال/استقبال هذا الإعداد ببساطة.
إذا نظرت إلى الكود، فسترى أنها في الغالب لعبة لأن إجراء مثل هذا الإعداد أمر بسيط للغاية ( bind()
, connect()
, send()
, recv()
)، ولكن يمكن أن يكون تجريدًا مفيدًا لهؤلاء الذين ليسوا على دراية بالمقبس.
struct udp_pair * pair = udp_pair_create ( recv_port , dest_ip4 , dest_port );
char buf [ 512 ];
while ( 1 ) {
ssize_t bytes_recvd = 0 ;
udp_pair_recv ( pair , ( void * ) buf , sizeof ( buf ), & bytes_recvd );
if ( bytes_recvd > 0 ) {
udp_pair_send ( pair , ( void * ) buf , bytes_recvd , NULL );
}
}
udp_pair_free ( pair );
مصادر الأمثلة أكثر تفصيلاً من هذا المقتطف بسبب التحقق من الأخطاء. هناك ثلاثة أمثلة مقدمة:
example/echo_server.c
example/spam_hello_world.c
bin/udpcat.c
رقصة CMake/Make المعتادة.
mkdir build
cd build
cmake ..
make
udpcat
بمجرد إنشائها، يمكنك الحصول على عمليتين udpcat
للتحدث مع بعضهما البعض بكل بساطة. ما عليك سوى فتح جلسة واحدة باسم udpcat 12345 127.0.0.1 12346
والأخرى باسم udpcat 12346 127.0.0.1 12345
. سيتم إرسال أي أسطر يتم إدخالها عند الموجه (إدخال stdin
) إلى عملية udpcat
الأخرى وطباعتها إلى stdout
.