socket长连接代码实现 c++
时间: 2023-09-02 09:06:42 浏览: 57
下面是一个简单的C++代码示例,展示了如何使用Socket实现长连接:
```cpp
#include <iostream>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <cstring>
const int BUFFER_SIZE = 1024;
const int SERVER_PORT = 1234;
const char* SERVER_IP = "127.0.0.1";
int main() {
// 创建socket
int clientSocket = socket(AF_INET, SOCK_STREAM, 0);
if (clientSocket == -1) {
std::cerr << "Failed to create socket." << std::endl;
return -1;
}
// 设置服务器地址
sockaddr_in serverAddress{};
serverAddress.sin_family = AF_INET;
serverAddress.sin_port = htons(SERVER_PORT);
if (inet_pton(AF_INET, SERVER_IP, &(serverAddress.sin_addr)) <= 0) {
std::cerr << "Invalid server IP address." << std::endl;
close(clientSocket);
return -1;
}
// 连接服务器
if (connect(clientSocket, (struct sockaddr*)&serverAddress, sizeof(serverAddress)) == -1) {
std::cerr << "Failed to connect to the server." << std::endl;
close(clientSocket);
return -1;
}
// 长连接循环
while (true) {
// 发送数据
const char* message = "Hello, Server!";
if (send(clientSocket, message, strlen(message), 0) == -1) {
std::cerr << "Failed to send data." << std::endl;
close(clientSocket);
return -1;
}
// 接收数据
char buffer[BUFFER_SIZE];
memset(buffer, 0, sizeof(buffer));
int bytesRead = recv(clientSocket, buffer, sizeof(buffer) - 1, 0);
if (bytesRead <= 0) {
std::cerr << "Failed to receive data." << std::endl;
close(clientSocket);
return -1;
}
// 处理接收到的数据
std::cout << "Received: " << buffer << std::endl;
// 延时一段时间
sleep(1);
}
// 关闭socket
close(clientSocket);
return 0;
}
```
上述代码创建了一个客户端Socket,并与指定的服务器地址建立连接。在长连接循环中,它会不断地发送数据并接收服务器返回的数据。你可以根据实际需求修改代码来适应你的应用场景。
请注意,这只是一个简单的示例,实际情况下可能需要处理更多的错误和异常情况,并根据具体需求进行调整。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)