From dd3906c96555805af2580d593cf9429170b07a02 Mon Sep 17 00:00:00 2001 From: Nic Gaffney Date: Wed, 28 Jun 2023 23:55:00 -0500 Subject: sockets --- std/stdsocket.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 std/stdsocket.c (limited to 'std/stdsocket.c') diff --git a/std/stdsocket.c b/std/stdsocket.c new file mode 100644 index 0000000..592291d --- /dev/null +++ b/std/stdsocket.c @@ -0,0 +1,48 @@ +#include +#include +#include +#include +#include +#include +#define PORT 8080 + +int serversock() { + int opt = 1; + int sock = socket(AF_INET, SOCK_STREAM, 0); + struct sockaddr_in address; + int addrlen = sizeof(address); + setsockopt(sock, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt)); + address.sin_family = AF_INET; + address.sin_addr.s_addr = INADDR_ANY; + address.sin_port = htons(PORT); + + bind(sock, (struct sockaddr*)&address, sizeof(address)); + listen(sock, 3); + int new_sock = accept(sock, (struct sockaddr*)&address, (socklen_t*)&addrlen); + return new_sock; +} + +int clientsock() { + struct sockaddr_in serv_addr; + int sock = socket(AF_INET, SOCK_STREAM, 0); + serv_addr.sin_family = AF_INET; + serv_addr.sin_port = htons(PORT); + + inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr); + int status = connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)); + return sock; +} + +char* recvsock(int soc) { + char* buf = malloc(1024); + int valread = read(soc, buf, 1024); + return buf; +} + +void sendsock(char* msg, int soc) { + send(soc, msg, strlen(msg), 0); +} + +void closesock(int soc) { + close(soc); +} -- cgit v1.2.3