diff options
author | William Harrington <kb0iic@berzerkula.org> | 2025-01-14 16:06:02 -0600 |
---|---|---|
committer | William Harrington <kb0iic@berzerkula.org> | 2025-01-14 16:06:02 -0600 |
commit | 0cc9b20c15460213e488bf5e70963b941482f628 (patch) | |
tree | bb0143245583ec846630f39bfa2258dba640ccd7 /sdk/net/udpsocket.c | |
parent | 0e084ade5069756d487b5c948c48b777e37c00c9 (diff) |
Add source.
Diffstat (limited to 'sdk/net/udpsocket.c')
-rw-r--r-- | sdk/net/udpsocket.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/sdk/net/udpsocket.c b/sdk/net/udpsocket.c new file mode 100644 index 0000000..2127ac3 --- /dev/null +++ b/sdk/net/udpsocket.c @@ -0,0 +1,36 @@ +/* + * Create and bind a udp socket for a server. + * $Id$ + * Copyright (c) 1997 by Tycho Softworks. + * For conditions of distribution and reuse see product license. + */ + +#include <net/socket.h> + +SOCKET udpsocket(char *mask, int port) +{ + SOCKET so; + struct sockaddr_in saddr; + struct in_addr *aptr; + + so = socket(AF_INET, SOCK_DGRAM, 0); + if(so == INVALID_SOCKET) + return so; + + saddr.sin_family = AF_INET; + saddr.sin_port = htons(port); + aptr = getnetaddr(mask); + if(!aptr) + { + endsocket(so); + return INVALID_SOCKET; + } + saddr.sin_addr = *aptr; + + if(bind(so, (struct sockaddr *)&saddr, sizeof(saddr))) + { + endsocket(so); + return INVALID_SOCKET; + } + return so; +} |