linux下c++实现socket通信
时间: 2024-08-31 12:00:20 浏览: 61
在Linux环境下使用C++实现socket通信,主要是通过C++标准库中的`std::socket`以及相关的套接字API(如`boost.asio`或`sys/socket.h`)。以下是基本步骤:
1. **包含头文件**:
- `#include <iostream>` (用于输入输出)
- `#include <string>` (处理字符串)
- `#include <boost/asio.hpp>` (如果使用Boost.Asio库)
或者
- `#include <sys/types.h>`,`#include <sys/socket.h>`,`#include <netinet/in.h>`,`#include <arpa/inet.h>` (如果使用系统库)
2. **初始化 Boost.Asio 服务端**:
```cpp
boost::asio::io_context io;
boost::asio::ip::tcp::acceptor acceptor(io, {IP_ADDRESS, PORT});
```
3. **创建套接字并绑定地址**:
```cpp
boost::asio::ip::tcp::socket socket(io);
acceptor.accept(socket);
```
4. **接收和发送数据**:
```cpp
std::string message;
boost::asio::read(socket, boost::asio::buffer(message));
std::cout << "Received: " << message << std::endl;
boost::asio::write(socket, boost::asio::buffer("Hello from server!"));
```
5. **关闭连接**:
```cpp
socket.close();
```
6. **循环等待新连接**:
如果需要长期运行服务,可以放入一个循环里。
注意:上述代码示例使用了Boost.Asio库简化网络编程,如果没有安装该库,则需使用系统库的方式编写更底层的socket操作。
阅读全文