spartserv

Simple client and server for the spartan protocol
git clone https://noulin.net/git/spartserv.git
Log | Files | Refs | README

commit 983cf0ec2014e9b8eca8aae60fccefdc1d76d2c3
parent 858eeb9a627173d4a239c14e5c1bd1e51c3d82c2
Author: Remy Noulin <loader2x@gmail.com>
Date:   Mon, 10 Jul 2023 21:54:43 +0200

spartan udp: keep server socket open

spartservudp.c | 23 +++++++++++------------
1 file changed, 11 insertions(+), 12 deletions(-)

Diffstat:
Mspartservudp.c | 23+++++++++++------------
1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/spartservudp.c b/spartservudp.c @@ -81,6 +81,11 @@ int main(int ac, char **av){ slash++; } + sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); + if (sock < 0){ + perror("Failed to create socket"); + } + server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; server.sin_port = htons(PORT); @@ -93,28 +98,22 @@ int main(int ac, char **av){ int optval = 1; setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const void *)&optval , sizeof(int)); + if (bind(sock, (struct sockaddr *) &server, sizeof(server))){ + perror("bind failed"); + exit(1); + } + listen(sock, SOMAXCONN); + printf("Serving "HOSTNAME":%d %s\n", PORT, root); // date for request print char date[50]; do { - sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); - if (sock < 0){ - perror("Failed to create socket"); - } - - if (bind(sock, (struct sockaddr *) &server, sizeof(server))){ - perror("bind failed"); - exit(1); - } - listen(sock, SOMAXCONN); - // struct for printing client ip in terminal with inet_ntoa struct sockaddr_in addr; socklen_t len = sizeof(addr); memset(buf, 0, sizeof(buf)); ssize_t r = recvfrom(sock, buf, sizeof(buf), 0, (struct sockaddr *) &addr, &len); - close(sock); if (r == -1) perror("recvfrom failed"); else {