C++,Socket通讯实例
时间: 2024-09-27 18:10:16 浏览: 31
C++ 中的 Socket 通信通常涉及到网络编程,它允许两个进程之间通过 Internet 进行数据交换。以下是一个简单的套接字(Socket)通信的基本步骤以及一个简化的实例:
1. **创建套接字**:首先,你需要创建一个 Socket 对象,这通常是通过 `::socket()` 函数完成的,它需要一个协议族(如 AF_INET 对于 IPv4 或 AF_INET6 对于 IPv6),一个熟知的端口号(如 TCP 的 80),以及一个地址域(SOCK_STREAM for TCP)。
```cpp
int client_sock = socket(AF_INET, SOCK_STREAM, 0);
```
2. **设置服务器地址**:对于客户端来说,需要连接到服务器。创建一个 sockaddr_in 结构体来存储服务器地址和端口信息。
```cpp
struct sockaddr_in server_addr;
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(SERVER_PORT);
inet_pton(AF_INET, SERVER_IP, &server_addr.sin_addr);
```
3. **连接服务器**:使用 `connect()` 函数连接到服务器。
```cpp
if (connect(client_sock, (sockaddr*)&server_addr, sizeof(server_addr)) < 0) {
// 处理错误...
}
```
4. **发送和接收数据**:使用 `send()` 和 `recv()` 函数来发送和接收数据。例如,你可以循环读取服务器的数据并显示出来。
```cpp
char buffer[BUF_SIZE];
while (true) {
int bytes_received = recv(client_sock, buffer, BUF_SIZE, 0);
if (bytes_received <= 0) {
break; // 如果接收失败,关闭连接
}
// 处理接收到的数据
std::cout << "Received: " << buffer << std::endl;
}
```
5. **断开连接**:最后,在不再需要通信时,记得关闭套接字 `close(client_sock)`。
这是最基本的客户端 Socket 通信的例子。在实际应用中,可能还需要处理异常、错误检查、以及线程安全等问题。
阅读全文