Ein sehr einfaches C-Objekt, das die BSD-Socket-API umschließt, um eine UDP-Socket-Paar-Abstraktion bereitzustellen. Angenommen, Sie haben zwei bekannte Endpunkte, die über UDP miteinander kommunizieren müssen. Sie kennen den Port, auf dem Sie empfangen, und die Adresse/den Port des anderen Endpunkts. Sie können ein UDP-Paarobjekt definieren, das Ihren Endpunkt darstellt, und für diese Einrichtung einfach senden/empfangen.
Wenn Sie sich den Code ansehen, werden Sie feststellen, dass es sich größtenteils um ein Spielzeug handelt, da die Durchführung einer solchen Einrichtung sehr einfach ist ( bind()
, connect()
, send()
, recv()
), für diese jedoch eine praktische Abstraktion sein kann die nicht so steckdosenaffin sind.
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 );
Aufgrund der Fehlerprüfung sind die Beispielquellen ausführlicher als dieser Ausschnitt. Es werden drei Beispiele bereitgestellt:
example/echo_server.c
example/spam_hello_world.c
bin/udpcat.c
Der übliche CMake/Make-Tanz.
mkdir build
cd build
cmake ..
make
udpcat
Beispiel Sobald Sie es erstellt haben, können Sie ganz einfach zwei udpcat
-Prozesse dazu bringen, miteinander zu kommunizieren. Öffnen Sie einfach eine Sitzung als udpcat 12345 127.0.0.1 12346
und die andere als udpcat 12346 127.0.0.1 12345
. Alle an der Eingabeaufforderung eingegebenen Zeilen ( stdin
Eingabe) werden an den anderen udpcat
-Prozess gesendet und auf stdout
ausgegeben.