From 2050c0e0576f05156f192aa4caf48834d2f28b14 Mon Sep 17 00:00:00 2001 From: fschildt Date: Fri, 22 Aug 2025 15:23:11 +0200 Subject: first commit --- src/graveyard/win32/win32_net.c | 79 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/graveyard/win32/win32_net.c (limited to 'src/graveyard/win32/win32_net.c') diff --git a/src/graveyard/win32/win32_net.c b/src/graveyard/win32/win32_net.c new file mode 100644 index 0000000..84a9373 --- /dev/null +++ b/src/graveyard/win32/win32_net.c @@ -0,0 +1,79 @@ +DEBUG_PLATFORM_CONNECT(win32_connect) +{ + SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (sock == INVALID_SOCKET) + { + int error = WSAGetLastError(); + printf("socket() failed, error = %d\n", error); + return -1; + } + printf("socket() success\n"); + + struct sockaddr_in server_addr; + server_addr.sin_family = AF_INET; + server_addr.sin_port = htons(port); + server_addr.sin_addr.s_addr = inet_addr(address); + + int connected = connect(sock, (struct sockaddr*)&server_addr, sizeof(server_addr)); + if (connected != 0) + { + int error = WSAGetLastError(); + printf("connect() failed, error = %d\n", error); + closesocket(sock); + return -1; + } + printf("connect(...) success\n"); + + u_long mode = 1; + int result = ioctlsocket(sock, FIONBIO, &mode); + if (result != NO_ERROR) + { + int error = WSAGetLastError(); + printf("ioctlsocket failed, error = %d\n", error); + closesocket(sock); + return -1; + } + printf("fcntl() success\n"); + + return sock; +} + +DEBUG_PLATFORM_DISCONNECT(win32_disconnect) +{ + closesocket(netid); +} + +internal +DEBUG_PLATFORM_SEND(win32_send) +{ + printf("sending...\n"); + int sent = send(netid, (const char*)buffer, size, 0); + printf("sent %d/%u bytes\n", sent, size); + return sent; +} + +internal +DEBUG_PLATFORM_RECV(win32_recv) +{ + printf("receving...\n"); + int recvd = recv(netid, (char*)buffer, size, 0); + printf("recvd %d bytes\n", recvd); + if (recvd == SOCKET_ERROR) + { + return -1; + } + return recvd; +} + +internal b32 +win32_init_networking() +{ + static WSADATA wsaData; + int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); + if (iResult != 0) { + wprintf(L"WSAStartup failed: %d\n", iResult); + return false; + } + printf("WSAStartup done\n"); + return true; +} -- cgit v1.2.3