TCP和UDP网络编程API

本文详细介绍了TCP和UDP的网络编程API,包括客户机-服务器模型、套接字地址、TCP和UDP的协议特点及编程模型。重点阐述了TCP的socket、bind、listen、accept、connect、read、write、close等API的使用,以及UDP的sendto和recvfrom函数。这些API在实现可靠传输的TCP和无连接的UDP通信中起着关键作用。
摘要由CSDN通过智能技术生成

客户机-服务器模型

一个简单的客户机-服务器模型如下图所示。
在这里插入图片描述
客户机需要某个数据或某项服务时,向服务器发送请求,服务器对该请求作出响应,向客户机提供它想要的东西。
一个服务器可以同时对多个客户机作出响应。
客户机和服务器都是以进程(不是机器)为单位的,即客户机进程、服务器进程。

套接字地址

套接字地址主要有三个重要信息:地址族(表示哪种套接字)、IP地址端口号
不同类型的套接字定义了不同的结构。

IPV4套接字

/* IPV4套接字地址,32bit值.  */
typedef uint32_t in_addr_t;
struct in_addr
  {
   
    in_addr_t s_addr;
  };
  
/* 描述IPV4的套接字地址格式  */
struct sockaddr_in
  {
   
    sa_family_t sin_family; /* 16-bit */
    in_port_t sin_port;     /* 端口号  16-bit*/
    struct in_addr sin_addr;    /* Internet address. 32-bit */
    /* 这里仅仅用作占位符,不做实际用处  */
    unsigned char sin_zero[8];
  };

IPV6套接字

struct sockaddr_in6
  {
   
    sa_family_t sin6_family; /* 16-bit */
    in_port_t sin6_port;  /* 传输端口号 # 16-bit */
    uint32_t sin6_flowinfo; /* IPv6流控信息 32-bit*/
    struct in6_addr sin6_addr;  /* IPv6地址128-bit */
    uint32_t sin6_scope_id; /* IPv6域ID 32-bit */
  };

本地套接字

struct sockaddr_un {
   
    unsigned short sun_family; /* 固定为 AF_LOCAL */
    char sun_path[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值