首页 > 运维 > linux运维 > 正文

Linux如何开发TCP网络程序_LinuxSocket网络通信示例

舞夢輝影
发布: 2025-11-29 19:46:20
原创
504人浏览过
首先介绍TCP通信基本流程,包括服务器端的套接字创建、绑定、监听、接受连接及数据收发,以及客户端的连接建立与数据交互;接着通过回声服务器和客户端示例代码展示具体实现,服务器接收客户端消息并原样返回;最后说明编译运行方法,使用gcc编译后先启动服务器再运行客户端进行测试,输入“exit”退出,为后续多客户端、文件传输等扩展应用奠定基础。

linux如何开发tcp网络程序_linuxsocket网络通信示例

开发TCP网络程序是Linux系统编程中的基础技能,常用于实现客户端与服务器之间的可靠通信。通过使用Socket API,可以快速构建基于TCP协议的网络应用。下面以一个简单的回声(Echo)服务器和客户端为例,说明如何在Linux下编写TCP网络程序。

1. TCP通信基本流程

在Linux中,TCP通信通常分为服务器端和客户端两部分:

服务器端流程:

  • 创建套接字(socket)
  • 绑定地址和端口(bind)
  • 监听连接请求(listen)
  • 接受客户端连接(accept)
  • 接收和发送数据(recv/send)
  • 关闭连接(close)

客户端流程:

  • 创建套接字(socket)
  • 连接服务器(connect)
  • 发送和接收数据(send/recv)
  • 关闭连接(close)

2. 示例:TCP回声服务器

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
<h1>define PORT 8888</h1><h1>define BUFFER_SIZE 1024</h1><p>int main() {
int server_fd, client_fd;
struct sockaddr_in server_addr, client_addr;
socklen_t client_len = sizeof(client_addr);
char buffer[BUFFER_SIZE];</p><pre class='brush:php;toolbar:false;'>// 创建套接字
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
    perror("socket");
    exit(EXIT_FAILURE);
}

// 配置服务器地址
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(PORT);
server_addr.sin_addr.s_addr = INADDR_ANY;

// 绑定
if (bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {
    perror("bind");
    close(server_fd);
    exit(EXIT_FAILURE);
}

// 监听
if (listen(server_fd, 5) == -1) {
    perror("listen");
    close(server_fd);
    exit(EXIT_FAILURE);
}

printf("服务器正在监听端口 %d...\n", PORT);

// 接受连接
client_fd = accept(server_fd, (struct sockaddr *)&client_addr, &client_len);
if (client_fd == -1) {
    perror("accept");
    close(server_fd);
    exit(EXIT_FAILURE);
}

printf("客户端已连接\n");

// 循环读取并回传数据
while (1) {
    ssize_t len = recv(client_fd, buffer, BUFFER_SIZE - 1, 0);
    if (len > 0) {
        buffer[len] = '\0';
        printf("收到: %s", buffer);
        send(client_fd, buffer, len, 0);
    } else {
        break;  // 客户端断开
    }
}

printf("客户端断开连接\n");
close(client_fd);
close(server_fd);
return 0;
登录后复制

}

PHP高级开发技巧与范例
PHP高级开发技巧与范例

PHP是一种功能强大的网络程序设计语言,而且易学易用,移植性和可扩展性也都非常优秀,本书将为读者详细介绍PHP编程。 全书分为预备篇、开始篇和加速篇三大部分,共9章。预备篇主要介绍一些学习PHP语言的预备知识以及PHP运行平台的架设;开始篇则较为详细地向读者介绍PKP语言的基本语法和常用函数,以及用PHP如何对MySQL数据库进行操作;加速篇则通过对典型实例的介绍来使读者全面掌握PHP。 本书

PHP高级开发技巧与范例 472
查看详情 PHP高级开发技巧与范例

3. 示例:TCP客户端

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
<h1>define SERVER_IP "127.0.0.1"</h1><h1>define PORT 8888</h1><h1>define BUFFER_SIZE 1024</h1><p>int main() {
int sock;
struct sockaddr_in server_addr;
char send_buf[100], recv_buf[BUFFER_SIZE];</p><pre class='brush:php;toolbar:false;'>// 创建套接字
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
    perror("socket");
    exit(EXIT_FAILURE);
}

// 设置服务器地址
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(PORT);
inet_pton(AF_INET, SERVER_IP, &server_addr.sin_addr);

// 连接服务器
if (connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {
    perror("connect");
    close(sock);
    exit(EXIT_FAILURE);
}

printf("已连接到服务器\n");

// 发送消息并接收回声
while (1) {
    printf("输入消息: ");
    fgets(send_buf, sizeof(send_buf), stdin);
    if (strcmp(send_buf, "exit\n") == 0) {
        break;
    }
    send(sock, send_buf, strlen(send_buf), 0);
    ssize_t len = recv(sock, recv_buf, BUFFER_SIZE - 1, 0);
    if (len > 0) {
        recv_buf[len] = '\0';
        printf("回声: %s\n", recv_buf);
    }
}

close(sock);
printf("连接已关闭\n");
return 0;
登录后复制

}

4. 编译与运行

将服务器代码保存为 tcp_server.c,客户端保存为 tcp_client.c,然后使用gcc编译:

gcc -o server tcp_server.c
登录后复制
gcc -o client tcp_client.c
登录后复制

先运行服务器:

./server
登录后复制

再打开另一个终端运行客户端:

./client
登录后复制

在客户端输入内容,服务器会原样返回,输入 "exit" 可退出客户端。

基本上就这些。掌握这个模型后,可以扩展为多客户端支持(使用fork或多线程)、文件传输、聊天室等应用。关键是理解Socket的创建、连接、数据读写和错误处理机制。

以上就是Linux如何开发TCP网络程序_LinuxSocket网络通信示例的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号