german translation update
[reactos.git] / reactos / dll / cpl / timedate / ntpclient.c
1 #include <timedate.h>
2
3 SOCKET Sock;
4 SOCKADDR_IN myAddr, ntpAddr;
5
6 BOOL InitialiseConnection()
7 {
8 WSADATA wsaData;
9 INT Ret;
10
11 Ret = WSAStartup(MAKEWORD(2, 2),
12 &wsaData);
13 if (Ret != 0)
14 return FALSE;
15
16
17 Sock = WSASocket(AF_INET,
18 SOCK_DGRAM,
19 IPPROTO_UDP,
20 NULL,
21 0,
22 WSA_FLAG_OVERLAPPED);
23 if (Sock == INVALID_SOCKET )
24 return FALSE;
25
26 /* setup client socket */
27 ZeroMemory(&myAddr, sizeof(myAddr));
28 myAddr.sin_family = AF_INET;
29 myAddr.sin_port = htons(IPPORT_TIMESERVER);
30 myAddr.sin_addr.s_addr = INADDR_ANY;
31
32 Ret = bind(Sock,
33 (SOCKADDR *)&myAddr,
34 sizeof(SOCKADDR));
35 if (Ret == SOCKET_ERROR)
36 return FALSE;
37
38 /* setup server socket */
39 ZeroMemory(&ntpAddr, sizeof(ntpAddr));
40 ntpAddr.sin_family = AF_INET;
41 ntpAddr.sin_port = htons(IPPORT_TIMESERVER);
42 ntpAddr.sin_addr.s_addr = INADDR_ANY;
43
44 return TRUE;
45 }
46
47 VOID DestroyConnection()
48 {
49 WSACleanup();
50 }
51
52 /* send some data to wake the server up */
53 BOOL SendData()
54 {
55 CHAR Packet[] = "";
56 INT Ret;
57
58 Ret = sendto(Sock,
59 Packet,
60 sizeof(Packet),
61 0,
62 (SOCKADDR *)&myAddr,
63 sizeof(SOCKADDR_IN));
64
65 if (Ret == SOCKET_ERROR)
66 return FALSE;
67
68 return TRUE;
69 }
70
71
72 BOOL RecieveData(CHAR *Buf)
73 {
74 INT Ret;
75 INT Size = sizeof(SOCKADDR_IN);
76
77 Ret = recvfrom(Sock,
78 Buf,
79 BUFSIZE,
80 0,
81 (SOCKADDR *)&ntpAddr,
82 &Size);
83 if (Ret == SOCKET_ERROR)
84 return FALSE;
85
86 return TRUE;
87 }