C++ socket通讯并用pTCPSocket->write循环发送 ,并添加心跳包
时间: 2024-03-23 13:36:02 浏览: 56
好的,针对您的需求,我对之前的代码进行了一些修改,添加了心跳包的发送。以下是修改后的代码:
```c++
#include <iostream>
#include <cstring>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
using namespace std;
int main() {
int client_fd = socket(AF_INET, SOCK_STREAM, 0);
if (client_fd < 0) {
cout << "Create socket failed" << endl;
return -1;
}
sockaddr_in server_addr;
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8080);
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
if (connect(client_fd, (sockaddr*)&server_addr, sizeof(server_addr)) < 0) {
cout << "Connect to server failed" << endl;
return -2;
}
for(int i = 0; i < 10; i++) {
string message = "Hello, server!";
if (pTCPSocket->write(message.c_str(), message.size()) < 0) {
cout << "Send message failed" << endl;
return -3;
}
cout << "Send message success: " << message << endl;
sleep(1);
// 发送心跳包
string heartbeat = "heartbeat";
if (pTCPSocket->write(heartbeat.c_str(), heartbeat.size()) < 0) {
cout << "Send heartbeat failed" << endl;
return -4;
}
cout << "Send heartbeat success" << endl;
sleep(1);
}
close(client_fd);
return 0;
}
```
在这个例子中,我们在循环发送消息的同时,每隔 1 秒钟发送一个心跳包。心跳包的内容可以根据实际情况进行定义,这里我们使用了一个字符串 "heartbeat"。
需要注意的是,这里的 `pTCPSocket` 仍然可能是您自己定义的一个 TCP socket 对象,这里仅仅是做一个示例。在实际应用中,您需要按照实际情况进行定义和使用。
希望我的回答能够对您有所帮助!
阅读全文