Files
beej-network-programming/main.c
2023-04-05 01:37:50 -07:00

83 lines
1.6 KiB
C

#define WIN32_LEAN_AND_MEAN // Say this...
#include <windows.h>
#include <winsock2.h>
#include <stdio.h>
#include <stdint.h>
#pragma comment(lib, "Ws2_32.lib")
/*
Address info
- ai_flag: address info flag
- ai_family: addres info family AF_INET (ipv4) or AF_INET6 (ipv6)
- ai_socktype: socket type SOCK_STREAM or SOCK_DGRAM
- ai_protocol: use 0 for any
- ai_addrlen: size of the ai_addr (below)
- ai_addr: pointer sockaddr struct
- ai_canonname: canonical hostname
- ai_next: linked list to next node
*/
typedef struct addrinfo {
int ai_flag; // address info flags
int ai_family; // address info famitly ipv4/6
int ai_socktype;
int ai_protocol;
size_t ai_addrlen;
sockaddr *ai_addr;
char *ai_canonname;
addrinfo *ai_next;
} addrinfo;
/*
Socket address info
- sa_family: AF_XX (e.g AF_INET)
- sa_data: 14 bytes of protocol address
*/
typedef struct sockaddr {
unsigned short sa_family;
char *sa_data[14];
} sockaddr;
typedef sockaddr_in {
short int sin_family;
unsigned short int sin_port;
struct in_addr sin_addr;
unsigned char sin_zero[8];
} sockaddr_in;
int main()
{
{
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
fprintf(stderr, "WSAStartup failed.\n");
exit(1);
}
if (LOBYTE(wsaData.wVersion) != 2 ||
HIBYTE(wsaData.wVersion) != 2)
{
fprintf(stderr,"Versiion 2.2 of Winsock is not available.\n");
WSACleanup();
exit(2);
}
}
printf("hellow world!");
return(0);
}