huanayun
hengtianyun
vps567
莱卡云

[Linux操作系统]Socket编程入门教程——从基础到实践|sockets编程,Socket编程入门教程,Linux Socket编程实战指南,从基础到精通

PikPak

推荐阅读:

[AI-人工智能]免翻墙的AI利器:樱桃茶·智域GPT,让你轻松使用ChatGPT和Midjourney - 免费AIGC工具 - 拼车/合租账号 八折优惠码: AIGCJOEDISCOUNT2024

[AI-人工智能]银河录像局: 国内可靠的AI工具与流媒体的合租平台 高效省钱、现号秒发、翻车赔偿、无限续费|95折优惠码: AIGCJOE

[AI-人工智能]免梯免翻墙-ChatGPT拼车站月卡 | 可用GPT4/GPT4o/o1-preview | 会话隔离 | 全网最低价独享体验ChatGPT/Claude会员服务

[AI-人工智能]边界AICHAT - 超级永久终身会员激活 史诗级神器,口碑炸裂!300万人都在用的AI平台

本文介绍了Linux操作系统下的Socket编程入门知识,从基础概念到实际操作,涵盖sockets编程的核心内容,帮助读者快速掌握Socket编程的基本技巧与实践方法。

本文目录导读:

  1. Socket编程基础
  2. Socket编程实例

Socket编程是计算机网络编程中的一项基本技能,它允许程序员在不同的计算机之间进行数据传输,Socket可以看作是计算机网络通信过程中的端点,通过它,我们可以实现客户端与服务器之间的信息交换,本文将为您介绍Socket编程的基本概念、原理以及入门实践,帮助您快速掌握Socket编程。

Socket编程基础

1、Socket概念

Socket起源于UNIX操作系统,它是一种特殊的文件描述符,用于实现不同进程之间的通信,在网络编程中,Socket通常用来表示网络通信的端点,包括IP地址和端口号。

2、Socket类型

Socket有多种类型,其中最常用的是流式Socket(TCP)和数据报Socket(UDP)。

- 流式Socket(TCP):提供可靠的、面向连接的服务,数据传输过程中会建立连接、传输数据、断开连接,TCP协议保证了数据的可靠传输,但传输速度相对较慢。

- 数据报Socket(UDP):提供不可靠的、无连接的服务,数据传输过程中不需要建立连接,UDP协议传输速度快,但可靠性较低。

3、Socket函数

Socket编程涉及以下几个基本函数:

- socket():创建Socket。

- bind():将Socket绑定到指定的IP地址和端口号。

- listen():设置Socket为监听状态,等待客户端连接。

- accept():接受客户端连接请求。

- connect():连接到服务器端。

- send()和reCV():发送和接收数据。

- close():关闭Socket。

Socket编程实例

下面以一个简单的TCP Socket编程实例来演示客户端与服务器之间的通信。

1、服务器端代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
int main() {
    int server_fd, client_fd;
    struct sockaddr_in server_addr, client_addr;
    socklen_t client_addr_len = sizeof(client_addr);
    char buffer[1024] = {0};
    const char *hello = "Hello from server";
    // 创建Socket
    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
        perror("socket failed");
        exit(EXIT_FAILURE);
    }
    // 绑定地址和端口号
    server_addr.sin_family = AF_INET;
    server_addr.sin_addr.s_addr = INADDR_ANY;
    server_addr.sin_port = htons(8080);
    if (bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
        perror("bind failed");
        exit(EXIT_FAILURE);
    }
    // 监听
    if (listen(server_fd, 3) < 0) {
        perror("listen");
        exit(EXIT_FAILURE);
    }
    // 接受客户端连接
    if ((client_fd = accept(server_fd, (struct sockaddr *)&client_addr, &client_addr_len)) < 0) {
        perror("accept");
        exit(EXIT_FAILURE);
    }
    // 发送数据
    send(client_fd, hello, strlen(hello), 0);
    printf("Hello message sent
");
    // 关闭Socket
    close(server_fd);
    return 0;
}

2、客户端代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
int main() {
    struct sockaddr_in server_addr;
    int sock = 0;
    char buffer[1024] = {0};
    const char *hello = "Hello from client";
    // 创建Socket
    if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
        printf("
 Socket creation error 
");
        return -1;
    }
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(8080);
    // 转换地址从文本到二进制
    if (inet_pton(AF_INET, "127.0.0.1", &server_addr.sin_addr) <= 0) {
        printf("
Invalid address/ Address not supported 
");
        return -1;
    }
    // 连接到服务器
    if (connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
        printf("
Connection Failed 
");
        return -1;
    }
    // 发送数据
    send(sock, hello, strlen(hello), 0);
    printf("Hello message sent
");
    // 接收服务器端的数据
    int valread = read(sock, buffer, 1024);
    printf("%s
", buffer);
    // 关闭Socket
    close(sock);
    return 0;
}

本文介绍了Socket编程的基本概念、原理以及一个简单的TCP Socket编程实例,通过这个实例,我们可以了解到Socket编程的基本步骤,包括创建Socket、绑定地址和端口号、监听、接受连接、发送和接收数据以及关闭Socket,掌握Socket编程,对于开发网络应用程序具有重要意义。

关键词:Socket编程, 入门教程, 流式Socket, 数据报Socket, TCP, UDP, Socket函数, 服务器端, 客户端, 创建Socket, 绑定地址, 监听, 接受连接, 发送数据, 接收数据, 关闭Socket, 网络编程, 计算机网络, 实例, 编程实践, 通信, 端点, IP地址, 端口号, 网络通信, 可靠传输, 不可靠传输, 面向连接, 无连接, 数据传输, 网络应用程序

bwg Vultr justhost.asia racknerd hostkvm pesyun Pawns


本文标签属性:

Socket编程入门教程:熟悉socket编程

原文链接:,转发请注明来源!