全双工,半双工C++怎么代码实现
时间: 2023-11-14 10:25:26 浏览: 82
在 C++ 中实现全双工和半双工通信,可以使用 socket 编程。下面是一个简单的示例代码:
全双工通信:
```cpp
#include <iostream>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
using namespace std;
int main() {
int sock = socket(AF_INET, SOCK_STREAM, 0); // 创建 socket
sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
server_addr.sin_port = htons(8080);
// 连接服务器
connect(sock, (sockaddr*)&server_addr, sizeof(server_addr));
char msg[] = "Hello, server!";
char recv_buf[1024];
send(sock, msg, strlen(msg), 0); // 发送数据
recv(sock, recv_buf, sizeof(recv_buf), 0); // 接收数据
cout << "Received from server: " << recv_buf << endl;
close(sock);
return 0;
}
```
半双工通信:
```cpp
#include <iostream>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
using namespace std;
int main() {
int sock = socket(AF_INET, SOCK_STREAM, 0); // 创建 socket
sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
server_addr.sin_port = htons(8080);
// 连接服务器
connect(sock, (sockaddr*)&server_addr, sizeof(server_addr));
char msg[] = "Hello, server!";
send(sock, msg, strlen(msg), 0); // 发送数据
char recv_buf[1024];
recv(sock, recv_buf, sizeof(recv_buf), 0); // 接收数据
cout << "Received from server: " << recv_buf << endl;
close(sock);
return 0;
}
```
需要注意的是,以上代码只是一个简单的示例,实际应用中还需要进行错误处理和异常情况的处理。