Untitled

 avatar
unknown
plain_text
5 months ago
2.5 kB
3
Indexable
#include <arpa/inet.h>
#include <iostream>
#include <sys/socket.h>
#include <unistd.h>
#include <cstring>
#include <thread>
#include <chrono>
#include <cerrno>

#define PORT 8080
#define SERVER_IP "127.0.0.1"  // Localhost

void sendMessageToServer(const char* message) {
    int sock = 0;
    struct sockaddr_in serv_addr;
    char ack_buffer[1024] = {0};

    // Create socket
    if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
        std::cerr << "Client: Socket creation failed, errno: " << errno << " - " << strerror(errno) << std::endl;
        return;
    }

    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(PORT);

    // Convert IPv4 and IPv6 addresses from text to binary form
    if (inet_pton(AF_INET, SERVER_IP, &serv_addr.sin_addr) <= 0) {
        std::cerr << "Client: Invalid address or Address not supported, errno: " << errno << " - " << strerror(errno) << std::endl;
        close(sock);
        return;
    }

    // Connect to the server
    if (connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
        std::cerr << "Client: Connection Failed, errno: " << errno << " - " << strerror(errno) << std::endl;
        close(sock);
        return;
    }

    // Send the message to the server
    if (send(sock, message, strlen(message), 0) < 0) {
        std::cerr << "Client: Message send failed, errno: " << errno << " - " << strerror(errno) << std::endl;
        close(sock);
        return;
    }
    std::cout << "Client: Message sent - " << message << std::endl;

    // Wait for acknowledgment from the server
    int ack_read = read(sock, ack_buffer, 1024);
    if (ack_read < 0) {
        std::cerr << "Client: Acknowledgment read failed, errno: " << errno << " - " << strerror(errno) << std::endl;
    } else if (ack_read == 0) {
        std::cout << "Client: Server disconnected" << std::endl;
    } else {
        std::cout << "Client: Received acknowledgment - " << ack_buffer << std::endl;
    }

    close(sock);  // Close the connection
}

int main() {
    int message_count = 5;  // Number of messages to send
    int interval = 3;       // Interval in seconds

    for (int i = 1; i <= message_count; ++i) {
        std::string message = "Message " + std::to_string(i);
        sendMessageToServer(message.c_str());

        // Wait for the specified interval before sending the next message
        std::this_thread::sleep_for(std::chrono::seconds(interval));
    }

    return 0;
}
Editor is loading...
Leave a Comment