上一篇
在互联网技术飞速发展的今天,掌握底层的网络通信原理是每一位开发者迈向高级工程师的必经之路。本文将带你深度解析Linux网络编程,通过编写一个经典的TCP Socket程序,实现一个功能强大的“远程命令执行”工具。无论你是运维还是开发,这篇教程都将帮你彻底打通网络通信的任督二脉。
TCP Socket(套接字)是应用层与TCP/IP协议族通信的中间软件抽象层。简单来说,它就像是一个电源插座,只要客户端和服务器都“插上”了这个接口,数据就能在网络中顺畅流动。在实现远程命令执行时,我们主要利用了TCP协议的面向连接、可靠传输的特性。
本教程采用C语言Socket编程进行演示,主要分为服务端(Server)和客户端(Client)两个部分:
ls, ifconfig 等),并接收显示执行结果。 #include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#define PORT 8888int main() { int server_fd, new_socket; struct sockaddr_in address; char buffer[1024] = {0}; // 1. 创建socket server_fd = socket(AF_INET, SOCK_STREAM, 0); address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons(PORT); // 2. 绑定与监听 bind(server_fd, (struct sockaddr *)&address, sizeof(address)); listen(server_fd, 3); printf("服务端已启动,等待连接...\n"); while(1) { int addrlen = sizeof(address); new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen); // 3. 读取客户端命令 read(new_socket, buffer, 1024); printf("收到指令: %s\n", buffer); // 4. 执行远程命令并获取结果 FILE *fp = popen(buffer, "r"); char result[4096] = {0}; fread(result, 1, sizeof(result), fp); pclose(fp); // 5. 发送结果回客户端 send(new_socket, result, strlen(result), 0); close(new_socket); memset(buffer, 0, 1024); } return 0;} #include <stdio.h>#include <string.h>#include <sys/socket.h>#include <arpa/inet.h>#include <unistd.h>int main() { int sock = 0; struct sockaddr_in serv_addr; char cmd[1024] = {0}; char buffer[4096] = {0}; sock = socket(AF_INET, SOCK_STREAM, 0); serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(8888); inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr); connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)); printf("请输入要执行的命令: "); scanf("%s", cmd); send(sock, cmd, strlen(cmd), 0); read(sock, buffer, 4096); printf("服务器执行结果:\n%s\n", buffer); close(sock); return 0;} 在进行本次Linux网络编程实战时,我们重点学习了以下知识点:
popen 函数将命令结果通过网络传输。注意:本文实现的远程命令执行工具仅用于学习研究。在实际生产环境中,直接执行客户端传来的字符串是非常危险的(存在命令注入风险),必须配合严格的权限验证和参数过滤机制。
本文由主机测评网于2026-04-04发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20260433681.html