ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

网络5.15

2021-05-15 21:04:37  阅读:168  来源: 互联网

标签:socket int 网络 地址 5.15 接字 数据 字节


Sip+sport+dip+dport+protocol—五元组-标识一条通信网络中的每条数据都会包含有完整的五元组信息
Socket套接字编程 :网络通信程序的编写(接口+流程)
Udp协议通信程序的编写/tcp协议通信程序的编写
Udp协议与tcp协议的区别初识
Udp协议:用户数据报协议
特性:无连接 不可靠 面向数据报
应用场景:实时性要求大于安全性要求的场景—视频传输
Tcp协议:传输控制协议
特性:面向连接 可靠 面向字节流
应用场景:安全性要求大于实时性要求的场景—文件传输
在网络通信程序中,通信两端被分为:客户端、服务器端
客户端:提供给客户的通信端,通常是编写通信程序中主动发起请求的一端
服务端:通常指被动接受请求,提供服务的通信端
客户端是主动发送请求的一端,也就意味着客户端必须提前知道服务端的地址信息(ip+port)
服务端的地址信息通常是固定的,并且是提前提供给客户端的
Udp通信程序的编写(套接字的接口)
服务端

  1. 创建套接字—在内核中创建一个socket结构体
  2. 为套接字绑定地址信息 在创建胎儿子创建的socket结构体中加入ip+port信息
    1) 告诉操作系统主机收到的哪些数据应该交给当前的这个socket
    2) 确定发送数据的源端地址信息
    3.接收数据
    4.发送数据
    将要发送的数据放到socket发送缓冲区中,内核选择合适时候封装发送
    5.关闭套接字
    客户端
  3. 创建套接字
  4. 为套接字绑定地址(大多数情况下会忽略)在发送数据时,若socket没有绑定地址,则系统会选择合适的地址进行绑定
  5. 发送数据
  6. 接收数据
    5.关闭套接字
    当前进程从指定的socket接受缓冲区中取出数据
    Struct socket sip+sport 192.168.2.2:8000
    接口认识
  7. 创建套接字
    int socket(int domain, int type, int protocol);
    domain:地址域类型—AF_INET-IPV4通信,使用ipv4地址结构
    type:套接字类型;SOCK_STREAM/SOCK_DGRAM
    udp通信必须使用SOCK_DGRAM tcp通信必须使用SOCK_STREAM
    protocol:本次通信协议IPPROTO_TCP-6/IPPROTO_UDP-17;0
    返回值:返回一个文件描述符-操作句柄 成功返回0,失败返回-1
  8. 为套接字绑定地址信息
    int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
    sockfd:创建套接字返回的操作句柄
    addr:当前绑定的地址信息
    socklen_t:地址信息长度
    返回值:成功返回0,失败返回-1
  9. 接收数据
    ssize_t recvfrom(int sockfd,void *buf,int len,int flag,struct sockaddr * srcaddr,socklen_t * addrlen)
    sockfd:操作句柄 buf:空间地址 用于存放接收的数据
    len:要接受的数据长度,flag:选项标志-默认0-表示阻塞接收
    sarcddr:本条数据的源端地址信息
    addrlen:输入输出参数-指定要接受多长的地址结构,并且返回实际接收的地址长度
    返回值:返回实际接收到的数据长度;失败错误返回-1
  10. 发送数据:
    ssize_t sendto(int sockfd,void *data,int len,int flag,struct sockdaddr * peeraddr,socklen_t addrlen)
    sockfd:操作句柄 data:要发送的数据的空间首地址
    len:要发送的数据长度,flag :默认0-阻塞发送
    peeraddr:对端地址信息 addrlen:地址结构长度
    返回值:成功返回实际发送的数据长度,失败返回-1
  11. 关闭套接字
    Int close(int fd);
    字节序转换接口
    uint32_t htonl(uint32_t hostlong);32位数据主机到网络字节序转换
    uint16_t htons(uint16_t hostshort); 16位数据主机到网络字节序转换
    uint32_t ntohl(uint32_t netlong); 32位网络到数据主机字节序转换
    uint16_t ntohs(uint16_t netshort);16位网络到数据主机字节序转换
    port转换使用s,ip转换用l,不能混用
    将字符串淀粉十进制ip地址转换为整形网络字节序IP地址
    “192.168.2.2”->0xc0a80202
    in_addr_t inet_addr(const char *cp);
    将网络字节序IP地址转换为字符串点分十进制IP地址
    char *inet_ntoa(struct in_addr in);in.s_addr=0xc0a80202
    const char * inet_ntop(int af,viod

ssize_t --有符号int
size_t –无符号int

标签:socket,int,网络,地址,5.15,接字,数据,字节
来源: https://blog.csdn.net/qq_43609421/article/details/116862619

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有