C++ Socket 长连接代码
时间: 2024-06-16 07:04:35 浏览: 217
C++中使用Socket进行长连接的代码可以通过以下步骤实现:
1. 创建Socket:使用`socket()`函数创建一个套接字,指定协议族、套接字类型和协议。
2. 绑定地址:使用`bind()`函数将套接字与本地地址绑定,指定IP地址和端口号。
3. 监听连接:使用`listen()`函数开始监听连接请求。
4. 接受连接:使用`accept()`函数接受客户端的连接请求,返回一个新的套接字用于与客户端通信。
5. 通信:使用新的套接字进行数据的发送和接收,可以使用`send()`和`recv()`函数进行数据的传输。
6. 关闭连接:使用`close()`函数关闭套接字。
下面是一个简单的C++ Socket长连接的示例代码:
```cpp
#include <iostream>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
int main() {
// 创建Socket
int serverSocket = socket(AF_INET, SOCK_STREAM, 0);
// 绑定地址
struct sockaddr_in serverAddress{};
serverAddress.sin_family = AF_INET;
serverAddress.sin_port = htons(8080);
serverAddress.sin_addr.s_addr = INADDR_ANY;
bind(serverSocket, (struct sockaddr*)&serverAddress, sizeof(serverAddress));
// 监听连接
listen(serverSocket, 5);
while (true) {
// 接受连接
struct sockaddr_in clientAddress{};
socklen_t clientAddressLength = sizeof(clientAddress);
int clientSocket = accept(serverSocket, (struct sockaddr*)&clientAddress, &clientAddressLength);
// 通信
char buffer[1024];
while (true) {
memset(buffer, 0, sizeof(buffer));
int bytesRead = recv(clientSocket, buffer, sizeof(buffer), 0);
if (bytesRead <= 0) {
break;
}
std::cout << "Received: " << buffer << std::endl;
// 发送响应
const char* response = "Hello, client!";
send(clientSocket, response, strlen(response), 0);
}
// 关闭连接
close(clientSocket);
}
// 关闭Socket
close(serverSocket);
return 0;
}
```
阅读全文