【C语言教程】【常用类库】(十五)网络编程 - <sys/socket.h> 和 <netinet/in.h>

15. 网络编程 - <sys/socket.h><netinet/in.h>

网络编程在C语言中是通过套接字来实现的,套接字提供了进程间通信的端点。C语言的网络编程涉及到创建套接字、绑定地址、监听和接收数据。以下是网络编程的关键概念和基本实现方法。

15.1. 套接字基础
15.1.1. 套接字类型与协议

套接字是网络通信的基础,它分为不同的类型和协议:

  • 套接字类型

    • 流套接字(SOCK_STREAM:基于TCP协议,提供可靠的双向字节流通信。
    • 数据报套接字(SOCK_DGRAM:基于UDP协议,无连接,面向消息,通信时不保证消息顺序和完整性。
  • 协议

    • TCP(传输控制协议):提供可靠、有序的字节流服务,比如HTTP。
    • UDP(用户数据报协议):提供较低效能的、不可靠的数据报服务,比如DNS查询。
15.1.2. 创建和绑定套接字:socket, bind

创建套接字并绑定到指定IP和端口是建立网络服务的基础步骤。

  • socket 函数:用于创建一个新的套接字。

    int socket(int domain, int type, int protocol);
    
    • domain:地址族,一般为 AF_INET(IPv4)或 AF_INET6(IPv6)。
    • type:套接字类型,如 SOCK_STREAM(TCP)或 SOCK_DGRAM(UDP)。
    • protocol:通常设为 0,自动匹配。
  • bind 函数:将套接字与特定IP地址和端口绑定。

    int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
    
    • sockfd:由 socket 返回的文件描述符。
    • addr:IP地址和端口信息结构体,通常为 struct sockaddr_in
    • addrlen:地址结构体的长度。
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <string.h>

int main() {
   
    int sockfd = socket(AF_INET, SOCK_STREAM, 0); // 创建套接字 [1]

    struct sockaddr_in server_addr;
    memset(&server_addr, 0, sizeof(server_addr));</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值