-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsocket_util.hpp
57 lines (50 loc) · 1023 Bytes
/
socket_util.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#pragma once
#ifdef _WIN32
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#include <iostream>
#include <cstring>
#else
#include <unistd.h>
#include <arpa/inet.h>
#include <cstring>
#include <cerrno>
#endif
// Initialize Winsock
bool initWinsock() {
#ifdef _WIN32
WSADATA wsaData;
return WSAStartup(MAKEWORD(2, 2), &wsaData) == 0;
#else
return true;
#endif
}
// Cleanup Winsock
void cleanupWinsock() {
#ifdef _WIN32
WSACleanup();
#endif
}
// Create a socket
int createSocket() {
#ifdef _WIN32
return socket(AF_INET, SOCK_STREAM, 0);
#else
return socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
#endif
}
// Close a socket
void closeSocket(int socket) {
#ifdef _WIN32
closesocket(socket);
#else
close(socket);
#endif
}
// Set up a sockaddr_in structure
void setupSockAddr(sockaddr_in& addr, const char* ipAddress, int port) {
std::memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = inet_addr(ipAddress);
}