Skip to content

Socket 编程基础

AI生成

本页内容由 AI 助手生成,为非正式临时页面。

网络编程入门,TCP/UDP 协议详解,加密隧道与路由转发实践。

什么是 Socket

Socket(套接字)是网络编程的基础 API,它允许不同主机上的进程进行通信。

TCP vs UDP

特性TCPUDP
连接面向连接无连接
可靠性可靠传输不保证
速度较慢较快
适用场景文件传输、网页视频流、游戏

TCP 服务端示例

c
#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 addr_len = sizeof(client_addr);
    char buffer[1024] = {0};

    // 创建 socket
    server_fd = socket(AF_INET, SOCK_STREAM, 0);

    // 绑定地址和端口
    server_addr.sin_family = AF_INET;
    server_addr.sin_addr.s_addr = INADDR_ANY;
    server_addr.sin_port = htons(8080);
    bind(server_fd, (struct sockaddr*)&server_addr, sizeof(server_addr));

    // 监听
    listen(server_fd, 3);

    // 接受连接
    client_fd = accept(server_fd, (struct sockaddr*)&client_addr, &addr_len);

    // 读取数据
    read(client_fd, buffer, 1024);
    printf("收到消息: %s\n", buffer);

    // 发送响应
    send(client_fd, "Hello from server", 17, 0);

    close(client_fd);
    close(server_fd);
    return 0;
}

下一步学习

  • 多线程/多进程服务器
  • I/O 多路复用(select/poll/epoll)
  • SSL/TLS 加密隧道
  • 路由转发与 NAT 穿透
  • WebSocket 协议