aboutsummaryrefslogtreecommitdiff
path: root/works/life/computer-network-experiment/client.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-05-27 15:13:46 +0800
committercrupest <crupest@outlook.com>2021-05-27 15:13:46 +0800
commita1192a14c6a52e8ab77e1c84e38b65aa5e250bec (patch)
tree50d2653f664a6aaf5593da6837b78294dc9715f5 /works/life/computer-network-experiment/client.cpp
parent6c0e4b64fa9967b2a2ef7dfb840cab3a8325f67e (diff)
downloadcrupest-a1192a14c6a52e8ab77e1c84e38b65aa5e250bec.tar.gz
crupest-a1192a14c6a52e8ab77e1c84e38b65aa5e250bec.tar.bz2
crupest-a1192a14c6a52e8ab77e1c84e38b65aa5e250bec.zip
import(life): Add computer network experiment.
Diffstat (limited to 'works/life/computer-network-experiment/client.cpp')
-rw-r--r--works/life/computer-network-experiment/client.cpp66
1 files changed, 66 insertions, 0 deletions
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 <Windows.h>
+#include <iostream>
+#include <string>
+#include <winsock.h>
+
+#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;
+}