SOCKET套接字

  操作系统提供,用于开发网络应用的一系列API函数接口,可以称为套接字函数,所有的系统平台都有对SOCKET套接字的兼容和实现

  虽然网络环境中有大量的协议类型,但是绝大多数协议都是采用TCP和UDP,也就是说很多软件或网站的访问与链接一样使用套接字

  在Linux平台所有的设备都会抽象成一个文件,得到该设备的文件描述符就可以访问使用设备了,在linux下socket是整型(sockfd 描述符)


网络信息结构体
    * 包含了socket相关的网络信息,IP,PORT,协议类型
    struct sockaddr_in addr 网络信息结构体
      addr_sin_family = AF_INET(ipv4) / AF_INET6(ipv6)
      addr.sin_port = 存储大端序端口号(16)
      addr.sin_addr.s_addr = 存储大端序IP(32)

  常用的大小端转换函数
    htons() *小端转大端端口号
    htonl() *小端转大端ip
    ntohs() *大端转小端端口
    ntohl() *大端转小端IP
    inet_pton(AF_INET,“402.41.2.152”,addr.sin_addr.s_addr )*字符串IP转大端序IP
    inet_ntop(AF_INET, addr.sin_addr.s_addr,ip,sizeof(ip)) *大端序转字符串IP,存到数据中

常用套接字函数

  int sockfd = socket(AF_INET,SOCK_STREAM|SOCK_DGRAM,int protocal) * 根据需求创建tcp或udp socket

  int bind(int sockfd,struct sockaddr * addr, socklen_t addrlen) * 绑定,可以让socket与特定的网络信息进行绑定,修改socket中的IP和端口

  ilisten(int sockfd, int backlog) * 监听函数,用于TCP协议,用户监听连接过程,持续监听此网络的网络消息和事件

  int client_fd = accept(int serverfd, struct sockaddr* client_addr, socklen_t* addrlen) * 服务端/被动端,调用阻塞等待客户端请求三次握手,该函数可以完成三次握手,连接成功,交互数据

  int reval = connect(int mysock,struct sockaddr* serveraddr, socklen_t addrlen); * 客户端/主动端执行,请求TCP连接(三次握手)

  recv() send() * TCP的常用读写接口

  recvfrom() sendto() *UDP的常用读写接口

  接收网络信息大小addrlen = sizeof(struct sockaddr)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌霄online

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值