This module implements datagram communications using UDP. A datagram is a small, fixed size message send to a given host and port, which is not guaranteed to arrive.
This module is arguably misnamed: A struct datagram
does not represent a datagram, but rather an open port that can be used to send datagrams with datagram_send.
Example sender:
include "datagram.h" include "debug.h"
const char *message = "hello world!"; const char *address = "192.168.2.1"; int port = 40000;
d = datagram_create(DATAGRAM_PORT_ANY); if(!d) fatal("couldn't create datagram port");
datagram_send(d,message,strlen(message),address,port);
And an example receiver:
include "datagram.h" include "debug.h"
char message[DATAGRAM_PAYLOAD_MAX]; char address[DATAGRAM_ADDRESS_MAX]; int port = 40000;
d = datagram_create(port); if(!d) fatal("couldn't create datagram port");
length = datagram_recv(d,message,sizeof(message),&address,&port,10000000); if(length>0) { message[length] = 0; printf("got message: %s\n",message); } else { printf("no message received.\n"); }
Go to the source code of this file.
Defines | |
#define | DATAGRAM_ADDRESS_MAX 48 |
Maximum number of characters in a text formatted datagram address. | |
#define | DATAGRAM_PAYLOAD_MAX 65536 |
Maximum number of bytes in a datagram payload. | |
#define | DATAGRAM_PORT_ANY 0 |
Used to indicate any available port. | |
#define | DATAGRAM_ADDRESS_BROADCAST "255.255.255.255" |
The address to send to for broadcasting. | |
Functions | |
datagram * | datagram_create (int port) |
Create a new port for sending or receiving datagrams. | |
void | datagram_delete (struct datagram *d) |
Destroy a datagram port. | |
int | datagram_recv (struct datagram *d, char *data, int length, char *addr, int *port, int timeout) |
Receive a datagram. | |
int | datagram_send (struct datagram *d, const char *data, int length, const char *addr, int port) |
Send a datagram. | |
int | datagram_fd (struct datagram *d) |
Obtain the file descriptor of a datagram object. |
|
Maximum number of characters in a text formatted datagram address.
|
|
Maximum number of bytes in a datagram payload.
|
|
Used to indicate any available port.
|
|
The address to send to for broadcasting.
|
|
Create a new port for sending or receiving datagrams.
|
|
Destroy a datagram port.
|
|
Receive a datagram.
|
|
Send a datagram.
|
|
Obtain the file descriptor of a datagram object.
|