用C++写一个从网络接收命令并执行且返回结果的程序
时间: 2023-01-30 18:49:53 浏览: 106
这是一个比较复杂的问题,需要你具备一定的网络编程和 C 语言基础。
以下是一个简单的例子,它使用 C 语言和网络编程库 `sockets` 实现了一个简单的命令行服务器,能够接收来自客户端的命令并执行,并将执行结果返回给客户端。
首先,你需要在服务器端创建一个 `sockets`,并绑定到本地的某个端口,然后调用 `listen` 函数将其转化为监听状态。
```c
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#define PORT 8888
int main(int argc, char const *argv[]) {
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
perror("Error creating socket");
return 1;
}
struct sockaddr_in server_addr;
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = INADDR_ANY;
server_addr.sin_port = htons(PORT);
if (bind(sockfd, (struct sockaddr*) &server_addr, sizeof(server_addr)) < 0) {
perror("Error binding socket");
return 1;
}
if (listen(sockfd, 10) < 0) {
perror("Error listening");
return 1;
}
// ...
}
```
接下来,你需要调用 `accept` 函数等待客户端的连接,然后接收来自客户端的命令并执行。你可以使用 `popen` 函数执行命令,并使用 `fgets` 函数读取执行结果。
```c
while (1) {
阅读全文