用c++写个socket主站程序每30秒循环发送心跳包,心跳包为16进制的数组
时间: 2024-02-25 10:53:19 浏览: 109
好的,以下是一个简单的 C++ 程序,用于循环发送心跳包:
```c++
#include <iostream>
#include <cstring>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
int main() {
// 创建 socket
int sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
std::cerr << "Failed to create socket." << std::endl;
return 1;
}
// 设置目标地址和端口
struct sockaddr_in server_address;
std::memset(&server_address, 0, sizeof(server_address));
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = inet_addr("127.0.0.1"); // 目标地址
server_address.sin_port = htons(1234); // 目标端口
// 连接到目标主机
if (connect(sock, (struct sockaddr*)&server_address, sizeof(server_address)) < 0) {
std::cerr << "Failed to connect to server." << std::endl;
return 1;
}
// 循环发送心跳包
while (true) {
// 构造心跳包
const char heartbeat[] = {0x11, 0x22, 0x33, 0x44, 0x55};
const int heartbeat_size = sizeof(heartbeat);
// 发送心跳包
if (send(sock, heartbeat, heartbeat_size, 0) != heartbeat_size) {
std::cerr << "Failed to send heartbeat." << std::endl;
break;
}
// 等待 30 秒
sleep(30);
}
// 关闭 socket
close(sock);
return 0;
}
```
这个程序使用了 `socket`、`connect`、`send` 和 `close` 等函数来创建 socket、连接到目标主机、发送数据和关闭 socket。程序每 30 秒发送一个长度为 5 字节的心跳包,心跳包的内容可以根据需要进行修改。
阅读全文