#include #include #include #include #pragma comment(lib, "ws2_32.lib") int main() { WSADATA wsa; SOCKET s, new_socket; struct sockaddr_in server, client; int c; const char* message = "Hello, World!"; char buffer[1024] = { 0 }; // Winsockの初期化 if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) { printf("Failed. Error Code : %d", WSAGetLastError()); return 1; } // ソケットの作成 if ((s = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { printf("Could not create socket : %d", WSAGetLastError()); return 1; } // サーバーアドレスの設定 server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; server.sin_port = htons(5555); // ソケットにアドレスをバインドする if (bind(s, (struct sockaddr*)&server, sizeof(server)) == SOCKET_ERROR) { printf("Bind failed with error code : %d", WSAGetLastError()); return 1; } // ソケットをリッスンする listen(s, 3); // クライアントからの接続を受け入れる c = sizeof(struct sockaddr_in); if ((new_socket = accept(s, (struct sockaddr*)&client, &c)) == INVALID_SOCKET) { printf("Accept failed with error code : %d", WSAGetLastError()); return 1; } // メッセージを送信する send(new_socket, message, strlen(message), 0); // クライアントからのデータを受信する memset(buffer, 0, sizeof(buffer)); if (recv(new_socket, buffer, 1024, 0) == SOCKET_ERROR) { printf("Recv failed with error code : %d", WSAGetLastError()); return 1; } printf("Client replied : %s\n", buffer); // ソケットを閉じる closesocket(s); closesocket(new_socket); // Winsockのクリーンアップ WSACleanup(); return 0; }