Untitled
unknown
plain_text
a year ago
2.5 kB
6
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