diff options
author | crupest <crupest@outlook.com> | 2021-06-06 22:13:43 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-06-06 22:13:43 +0800 |
commit | fcd2304e04dd3fabdefce4293b1b76ad99f8ed73 (patch) | |
tree | ee19cca7bfc1f66590d499a2b40d0e5c8b1d0d00 /works/life | |
parent | f0309ee1e5cd268091f59f3aa377beca77d76c5c (diff) | |
download | crupest-fcd2304e04dd3fabdefce4293b1b76ad99f8ed73.tar.gz crupest-fcd2304e04dd3fabdefce4293b1b76ad99f8ed73.tar.bz2 crupest-fcd2304e04dd3fabdefce4293b1b76ad99f8ed73.zip |
import(life): ...
Diffstat (limited to 'works/life')
-rw-r--r-- | works/life/computer-network-experiment/CMakeLists.txt | 8 | ||||
-rw-r--r-- | works/life/computer-network-experiment/Common.cpp | 15 | ||||
-rw-r--r-- | works/life/computer-network-experiment/Common.h | 2 | ||||
-rw-r--r-- | works/life/computer-network-experiment/client.cpp | 38 | ||||
-rw-r--r-- | works/life/computer-network-experiment/server.cpp | 16 |
5 files changed, 40 insertions, 39 deletions
diff --git a/works/life/computer-network-experiment/CMakeLists.txt b/works/life/computer-network-experiment/CMakeLists.txt index dc82736..4d4277c 100644 --- a/works/life/computer-network-experiment/CMakeLists.txt +++ b/works/life/computer-network-experiment/CMakeLists.txt @@ -10,10 +10,14 @@ set(CMAKE_CXX_STANDARD 17) find_package(fmt CONFIG REQUIRED)
find_package(Microsoft.GSL CONFIG REQUIRED)
add_library(base STATIC Common.cpp StringUtil.cpp Output.cpp)
-target_link_libraries(base PUBLIC Microsoft.GSL::GSL fmt::fmt)
+target_link_libraries(base PUBLIC Microsoft.GSL::GSL fmt::fmt Folly::folly)
+if(WIN32)
+target_link_libraries(base PUBLIC Ws2_32)
+endif()
add_executable(client client.cpp)
+target_link_libraries(client PRIVATE base)
add_executable(server server.cpp)
find_package(folly CONFIG REQUIRED)
-target_link_libraries(server PRIVATE base Folly::folly)
+target_link_libraries(server PRIVATE base)
diff --git a/works/life/computer-network-experiment/Common.cpp b/works/life/computer-network-experiment/Common.cpp index 02ac550..2e01dcb 100644 --- a/works/life/computer-network-experiment/Common.cpp +++ b/works/life/computer-network-experiment/Common.cpp @@ -5,7 +5,6 @@ #ifdef WIN32
#include <Windows.h>
#include <winsock.h>
-#pragma comment(lib, "Ws2_32.lib")
#endif
[[noreturn]] void PrintErrorMessageAndExit(StringView message,
@@ -46,3 +45,17 @@ void InitWSA() { }
}
#endif
+
+int main() {
+#ifdef WIN32
+ InitWSA();
+#endif
+
+ int c = Main();
+
+#ifdef WIN32
+ WSACleanup();
+#endif
+
+ return c;
+}
diff --git a/works/life/computer-network-experiment/Common.h b/works/life/computer-network-experiment/Common.h index 1f4fa23..45a7da1 100644 --- a/works/life/computer-network-experiment/Common.h +++ b/works/life/computer-network-experiment/Common.h @@ -14,6 +14,8 @@ inline auto &output_stream = std::wcout; inline auto &error_stream = std::wcerr;
#define CRUT(string_literal) L##string_literal
+int Main();
+
inline String ConvertCharString(std::string_view s) {
return cru::ToUtf16WString(s);
}
diff --git a/works/life/computer-network-experiment/client.cpp b/works/life/computer-network-experiment/client.cpp index 926ece6..aeb352f 100644 --- a/works/life/computer-network-experiment/client.cpp +++ b/works/life/computer-network-experiment/client.cpp @@ -2,32 +2,22 @@ * This is the client program.
*/
+#include "Common.h"
+#include "Output.h"
+
+#ifdef WIN32
#include <Windows.h>
-#include <iostream>
-#include <string>
#include <winsock.h>
-
-#pragma comment(lib, "ws2_32.lib")
+#endif
const auto connect_address = "127.0.0.1"; // control connect address
const u_short port = 1234; // control connect port
-int main() {
- WSADATA wsa_data;
-
- if (WSAStartup(MAKEWORD(2, 2), &wsa_data)) // initialize wsa
- {
- std::cerr << "WSA start up error!\n";
- WSACleanup();
- return 1;
- }
-
+int Main() {
int client_socket;
if ((client_socket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) {
- std::cerr << "Failed to create socket!\n";
- WSACleanup();
- return 1;
+ PrintErrorMessageAndExit(CRUT("Failed to create socket!\n"));
}
sockaddr_in server_address;
@@ -39,28 +29,22 @@ int main() { if (connect(client_socket, (sockaddr *)&server_address, sizeof(sockaddr)) ==
SOCKET_ERROR) {
- std::cerr << "Failed to connect!";
- WSACleanup();
- return 1;
+ PrintErrorMessageAndExit(CRUT("Failed to connect!"));
}
const int buffer_size = 100;
- char * buffer = new char[buffer_size];
+ char *buffer = new char[buffer_size];
int received_number = recv(client_socket, buffer, buffer_size, 0);
if (received_number == -1) {
- std::cerr << "Failed to recv.";
- WSACleanup();
- return 1;
+ PrintErrorMessageAndExit(CRUT("Failed to recv."));
}
std::string s(buffer, received_number);
- std::cout << "Received message:\n" << s;
+ SendOutput(CRUT("Received message:\n"));
closesocket(client_socket);
- WSACleanup();
-
return 0;
}
diff --git a/works/life/computer-network-experiment/server.cpp b/works/life/computer-network-experiment/server.cpp index 297114b..9cf655a 100644 --- a/works/life/computer-network-experiment/server.cpp +++ b/works/life/computer-network-experiment/server.cpp @@ -2,15 +2,17 @@ * This is the server program.
*/
+#include "Common.h"
#include "Output.h"
-#include <cstdlib>
-#include <iostream>
#include <optional>
-#include <string>
-#include <string_view>
#include <thread>
+#ifdef WIN32
+#include <Windows.h>
+#include <winsock.h>
+#endif
+
const auto bind_address = "127.0.0.1"; // control bind address
const u_short port = 1234; // control bind port
@@ -48,11 +50,7 @@ void ResponseThreadProc(int socket, sockaddr_in address) { closesocket(socket);
}
-int main() {
-#ifdef WIN32
- InitWSA();
-#endif
-
+int Main() {
int server_socket;
if ((server_socket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) {
|