Basic server, needs to be tested, now need to write client code
This commit is contained in:
33
src/main.cpp
33
src/main.cpp
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
- [ ] Setup so that both client and server are in one program?
|
||||
- [ ] I would like to make it nicely visible in debugger, I don't want to switch etc.
|
||||
- [ ] Create threads and put client code, server code on separate
|
||||
- [ ] Create client code
|
||||
|
||||
*/
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
@@ -173,10 +173,9 @@ void serialize_addrinfo(struct addrinfo* in) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#define PORT "8000"
|
||||
|
||||
int main() {
|
||||
void run_server() {
|
||||
WSADATA wsaData;
|
||||
|
||||
int err_wsa_startup = WSAStartup(MAKEWORD(2, 2), &wsaData);
|
||||
@@ -236,6 +235,32 @@ int main() {
|
||||
|
||||
debugf("waiting for connections...");
|
||||
|
||||
sockaddr_storage their_addr = {};
|
||||
while (1) {
|
||||
int their_addrlen = sizeof(their_addr);
|
||||
SOCKET conn_sock = accept(socket_fd, (sockaddr *)&their_addr, &their_addrlen);
|
||||
if (conn_sock == -1) {
|
||||
debugf("failed to accept connection %s", serialize_error_code(WSAGetLastError()));
|
||||
continue;
|
||||
}
|
||||
defer { closesocket(conn_sock); };
|
||||
|
||||
// @todo: this might be a little wrong, also the win32 and unix seem to differ on field names in sockaddr
|
||||
char s[INET6_ADDRSTRLEN];
|
||||
sockaddr *n = (sockaddr *)&their_addr;
|
||||
inet_ntop(their_addr.ss_family, n->sa_data, s, sizeof(s));
|
||||
debugf("server: got connection from: %s", s);
|
||||
|
||||
const char *msg = "Hello world";
|
||||
int send_err_code = send(conn_sock, msg, (int)strlen(msg), 0);
|
||||
if (send_err_code == -1) {
|
||||
debugf("failed to send message %s", serialize_error_code(WSAGetLastError()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
run_server();
|
||||
debugf("exiting...");
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user