From a1192a14c6a52e8ab77e1c84e38b65aa5e250bec Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 27 May 2021 15:13:46 +0800 Subject: import(life): Add computer network experiment. --- works/life/computer-network-experiment/client.cpp | 66 +++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 works/life/computer-network-experiment/client.cpp (limited to 'works/life/computer-network-experiment/client.cpp') diff --git a/works/life/computer-network-experiment/client.cpp b/works/life/computer-network-experiment/client.cpp new file mode 100644 index 0000000..926ece6 --- /dev/null +++ b/works/life/computer-network-experiment/client.cpp @@ -0,0 +1,66 @@ +/** Created by crupest. + * This is the client program. + */ + +#include +#include +#include +#include + +#pragma comment(lib, "ws2_32.lib") + +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 client_socket; + + if ((client_socket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { + std::cerr << "Failed to create socket!\n"; + WSACleanup(); + return 1; + } + + sockaddr_in server_address; + + server_address.sin_family = AF_INET; + server_address.sin_port = htons(port); + server_address.sin_addr.s_addr = inet_addr(connect_address); + memset(&(server_address.sin_zero), 0, sizeof(server_address.sin_zero)); + + if (connect(client_socket, (sockaddr *)&server_address, sizeof(sockaddr)) == + SOCKET_ERROR) { + std::cerr << "Failed to connect!"; + WSACleanup(); + return 1; + } + + const int buffer_size = 100; + 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; + } + + std::string s(buffer, received_number); + + std::cout << "Received message:\n" << s; + + closesocket(client_socket); + WSACleanup(); + + return 0; +} -- cgit v1.2.3