|
|
@@ -5,6 +5,7 @@
|
|
|
#include <netinet/in.h>
|
|
|
#include <errno.h>
|
|
|
#include <arpa/inet.h>
|
|
|
+#include <unistd.h>
|
|
|
|
|
|
#include "scufeng/log.h"
|
|
|
|
|
|
@@ -32,7 +33,7 @@ int main() {
|
|
|
.sin_addr = addr,
|
|
|
.sin_port = htons(SERVER_PORT)
|
|
|
};
|
|
|
- res = bind(sock, (struct sockaddr*) &own_addr, sizeof(own_addr));
|
|
|
+ res = bind(sock, (struct sockaddr *) &own_addr, sizeof(own_addr));
|
|
|
if (res == -1) {
|
|
|
LOG_FATALF("bind failed: %s", strerror(errno));
|
|
|
}
|
|
|
@@ -43,28 +44,93 @@ int main() {
|
|
|
LOG_FATALF("listen failed: %s", strerror(errno));
|
|
|
}
|
|
|
|
|
|
- int conn = -1;
|
|
|
-
|
|
|
- conn = accept(sock, nullptr, nullptr);
|
|
|
+ int conn = accept(sock, nullptr, nullptr);
|
|
|
if (conn == -1) {
|
|
|
LOG_FATALF("accept failed: %s", strerror(errno));
|
|
|
}
|
|
|
|
|
|
- char buf[1024] = {0};
|
|
|
- const size_t buf_size = sizeof(buf) / sizeof(buf[0]);
|
|
|
+ printf("Player connected\n");
|
|
|
+
|
|
|
+ FILE *conn_s = fdopen(conn, "r+");
|
|
|
+ if (conn_s == nullptr) {
|
|
|
+ LOG_FATALF("fdopen failed: (%d) %s", errno, strerror(errno));
|
|
|
+ }
|
|
|
|
|
|
while (true) {
|
|
|
- int received = recv(conn, buf, buf_size, 0);
|
|
|
- if (received == 0) {
|
|
|
- printf("buf: %s\n", buf);
|
|
|
- buf[0] = '\0';
|
|
|
- break;
|
|
|
- } else if (received == -1) {
|
|
|
- LOG_FATALF("recv failed: %d %s", errno, strerror(errno));
|
|
|
- } else {
|
|
|
- buf[received] = '\0';
|
|
|
- }
|
|
|
+ printf("Reading msg_len\n");
|
|
|
+ size_t msg_len;
|
|
|
+ size_t bytes_read = fread(&msg_len, sizeof(msg_len), 1, conn_s);
|
|
|
+ if (bytes_read < 1) {
|
|
|
+ LOG_FATALF("fread failed to read msg_len %zu", bytes_read);
|
|
|
+ }
|
|
|
+ printf("msg_len: %zu\n", msg_len);
|
|
|
+
|
|
|
+ printf("\nReading msg\n");
|
|
|
+ char *msg = (char *) malloc(msg_len + 1);
|
|
|
+ bytes_read = fread(msg, msg_len, 1, conn_s);
|
|
|
+ if (bytes_read < 1) {
|
|
|
+ LOG_FATALF("fread failed to read msg %zu", bytes_read);
|
|
|
+ }
|
|
|
+ msg[msg_len] = '\0';
|
|
|
+
|
|
|
+ printf("msg: %s\n\n", msg);
|
|
|
+
|
|
|
+ free(msg);
|
|
|
}
|
|
|
|
|
|
+ fclose(conn_s);
|
|
|
+ close(conn);
|
|
|
+ close(sock);
|
|
|
+
|
|
|
+ // char inter_buf[1024] = {0};
|
|
|
+ // const size_t inter_buf_size = sizeof(inter_buf) / sizeof(inter_buf[0]);
|
|
|
+ //
|
|
|
+ // size_t buf_size = sizeof(char) * 1024;
|
|
|
+ // size_t buf_len = 0;
|
|
|
+ // char *buf = (char *) malloc(buf_size);
|
|
|
+ // if (buf == nullptr) {
|
|
|
+ // LOG_FATAL("Failed to allocate buf");
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // while (true) {
|
|
|
+ // int received = recv(conn, inter_buf, inter_buf_size, 0);
|
|
|
+ // for (int i = 0; i < received; i++) {
|
|
|
+ // printf("'%c' ", inter_buf[i]);
|
|
|
+ // }
|
|
|
+ // putc('\n', stdout);
|
|
|
+ // if (received == -1) {
|
|
|
+ // LOG_FATALF("recv failed: %d %s", errno, strerror(errno));
|
|
|
+ // } else if (received == 0) {
|
|
|
+ // printf("Player disconnected\n");
|
|
|
+ // break;
|
|
|
+ // } else {
|
|
|
+ // if (buf_len + received + 1 > buf_size) {
|
|
|
+ // buf_size *= 2;
|
|
|
+ // buf = realloc(buf, buf_size);
|
|
|
+ // if (buf == nullptr) {
|
|
|
+ // LOG_FATAL("Failed to increase size of buf");
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // memcpy(buf + buf_len, inter_buf, received);
|
|
|
+ // buf_len += received;
|
|
|
+ // buf[buf_len] = '\0';
|
|
|
+ //
|
|
|
+ // printf("buf: %s\n", buf);
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // // if (received == 0) {
|
|
|
+ // // printf("buf: %s\n", buf);
|
|
|
+ // // buf[0] = '\0';
|
|
|
+ // // break;
|
|
|
+ // // } else if (received == -1) {
|
|
|
+ // // LOG_FATALF("recv failed: %d %s", errno, strerror(errno));
|
|
|
+ // // } else {
|
|
|
+ // // buf[received] = '\0';
|
|
|
+ // // }
|
|
|
+ // // printf("loop buf: %s\n", buf);
|
|
|
+ // }
|
|
|
+
|
|
|
+
|
|
|
return 0;
|
|
|
}
|