Linux网络基础:Udp_socket--纯干货无废话!!!

 

目录

端口号

  socket系统调用接口

      Struct sockaddr结构体注意事项

    bind函数

    recvfrom函数

    参数:flags:

    sendto函数:

    参数说明

    安全的地址转化函数

      4字节ip地址转字符串ip:

     字符串转网络序列:

  细节:

网络命令

端口号

  2字节16位整数

  端口号用来标识进程。

  ip + 端口号(port) == 标识 互联网中某一台主机中的一个进程

  网络通信的本质 :进程间通信!!!

  • 大小端

    • 一个数据的低权值位存储在内存的低地址处---小端 --- 记忆:小小小

    • 一个数据的低权值位存储在内存的高地址处---大端

  socket系统调用接口

    1.socket:创建套接字 --- 返回一个文件fd

    

      第一个参数:域---本地o网络(AF_INET)

      第二个参数:套接字类型 可以设置为xxx_DGARM(UDP协议)

      第三个参数:设置为0

      Struct sockaddr结构体注意事项

     struct sockaddr_in结构体中,要配置域---sin_family ,以及传入网络中的本机端口号sin_port---类型是 uint16_t, sin_addr中的s_addr成员:绑定ip地址

      将自定义的本地端口号port转化成网络序列的函数--->htons(uint16_t)

      网络序列转成主机序列的函数 ntohs函数(传入网络序列的port)

      注意!!sin_addr 接收的是网络序列类型的IP地址(4字节) ,可以使用系统调用inet_addr将字符串风格的ip地址转换为网络序列(该函数内部会先将ip转换为4字节int,然后转换为网络序列类型)

    bind函数

    将一个套接字(socket)与特定的IP地址和端口号绑定

    客户端不需要bind

    sockaddr.sin.addr_s.addr = INETADDR---表示接受所有的ip

    recvfrom函数

    用来读取/接收数据

    参数:flags:

    设置为0为阻塞读取

    sendto函数:

    作用:向客户端发送数据

    参数说明

      struct sockaddr:接收“谁”发来的ip和port

      flag可以设置为0:阻塞等待

    安全的地址转化函数

      4字节ip地址转字符串ip:

       af是AF_INET

     字符串转网络序列:

  细节:

  在云服务器上,server 要bind的ip = 0!!,云服务器不能绑定自己的公网IP,客户端不需要显示bind ip和port ---记得要填充结构体时,要转换成网络序列再传进去!!

  服务器加业务时,一定要强解耦!!IO与业务独立开!!

网络命令

  netstat -upa:查询系统中启动udp服务的进程

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值