ออบเจ็กต์ C ที่เรียบง่ายซึ่งล้อมรอบ API ซ็อกเก็ต 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