forked from nuclearzzet/Drone
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.c++
135 lines (116 loc) · 3.01 KB
/
server.c++
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#define WIN32_LEAN_AND_MEAN
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iostream>
#pragma comment(lib, "Ws2_32.lib")
#define BUFF_LEN 512
// To Reciece Data
int recvData(SOCKET *s)
{
char recvBuff[BUFF_LEN];
int recvBuffLen = BUFF_LEN;
if (recv(*s, recvBuff, recvBuffLen, 0) == SOCKET_ERROR)
{
wprintf(L"Recv Failed: %u \n", WSAGetLastError());
return 1;
}
else
{
return 0;
}
}
// To Send Data
int sendData(SOCKET *s)
{
char SEND_BUFF[BUFF_LEN];
int sendBuffLen = BUFF_LEN;
std::cout << "Enter a string: ";
std::cin >> SEND_BUFF;
if (send(*s, SEND_BUFF, sendBuffLen, 0) == SOCKET_ERROR)
{
wprintf(L"Send Failed: %u \n", WSAGetLastError());
closesocket(*s);
return 1;
}
else
{
std::cout << "Successful Send" << std::endl;
return 0;
}
}
// Future Work
int initServer(SOCKET *s, sockaddr_in *serv, WSADATA *wsa)
{
int iResult;
return 0;
return 0;
}
int main(void)
{
WSADATA wsaData;
SOCKET listenSocket = INVALID_SOCKET;
int iResult = 0;
sockaddr_in server;
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (iResult != NO_ERROR)
{
wprintf(L"Error: %u \n", WSAGetLastError());
return 1;
}
server.sin_family = AF_INET;
server.sin_port = htons(9090);
inet_pton(AF_INET, "192.168.1.5", &server.sin_addr);
listenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (listenSocket == INVALID_SOCKET)
{
wprintf(L"Error: %u\n", WSAGetLastError());
WSACleanup();
return 1;
}
if (bind(listenSocket, (struct sockaddr *)&server, sizeof(server)) == SOCKET_ERROR)
{
wprintf(L"Error: %u \n", WSAGetLastError());
WSACleanup();
return 1;
}
if (listen(listenSocket, 1) == SOCKET_ERROR)
{
wprintf(L"Error: %u \n", WSAGetLastError());
WSACleanup();
return 1;
}
std::cout << "[LISTENING] server is listening for clients" << std::endl;
SOCKET acceptSocket = INVALID_SOCKET;
std::cout << "[ACCEPTING] server is accepting for clients" << std::endl;
while (true)
{
acceptSocket = accept(listenSocket, NULL, NULL);
if (acceptSocket == SOCKET_ERROR)
{
wprintf(L"Error: %u \n", WSAGetLastError());
WSACleanup();
return 1;
}
else
{
std::cout << "[ACCEPTED] server accepted a client and establishing protocol" << std::endl;
while (true)
{
iResult = sendData(&acceptSocket);
if (iResult == 1)
{
wprintf(L"Error: %u \n", WSAGetLastError());
closesocket(listenSocket);
WSACleanup();
return 1;
}
}
}
}
}
/*
-Server accepting Clients: YES
-Server sending to client: YES
-Server recieving from client: YES
-Server taking input from keyboard: NO
*/