【Linux开发初步】00000021H_Linux网络编程——Socket理论篇


摘要


网络编程在实际的工作中很常用,一般占据项目开发的一半时长,弄懂它不论是提高工作效率还是面试、找工作都有利。
网络编程这部分计划用20个篇幅记录学习、实战笔记,尽情关注。


1. Socket(套接字)的定义


“socket就是插座,运行在计算机中的两个程序通过socket建立起一个通道,数据在通道中传输。
socket把复杂的TCP/IP协议族隐藏了起来,对程序员来说,只要用好socket相关的函数,就可以完成网络通信。”——摘自C语言技术网


在这里插入图片描述


socket的分类


“socket提供了流(stream)和数据报(datagram)两种通信机制、,即流socket和数据报socket。
流socket基于TCP协议,是一个有序、可靠、双向字节流的通道,传输数据不会丢失、不会重复、顺序也不会错乱。
数据报socket基于UDP协议,不需要建立和维持连接,可能会丢失或错乱。UDP不是一个可靠的协议,对数据的长度有限制,但是它的效率比较高。”
——摘自C语言技术网


1.1 创建Socket


实际上就是一个结构体
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


一个程序中可以创建多少个socket?
1024,单个进程打开的文件数是可以通过参数配置的,一般是1024个。



1.2 准备知识


1.2.1 字节序


在这里插入图片描述


在这里插入图片描述


1.2.2 字节序转换函数


在这里插入图片描述


在这里插入图片描述


转换练习:


1.2.3 通用地址结构


在这里插入图片描述


1.2.4 因特网地址结构


在这里插入图片描述


1.2.5 IPv4地址族和字节地址间的转换


在这里插入图片描述


1.2.6 填写IPv4地址族结构案例


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


1.3 实际编程


1.3.1 TCP客户端服务器编程模型


在这里插入图片描述


1.3.2 套接字与地址绑定


在这里插入图片描述


在这里插入图片描述


1.3.3 建立连接


在这里插入图片描述


在这里插入图片描述


TCP的三次握手


在这里插入图片描述


在这里插入图片描述


send函数


TBD.


recv函数


TBD.


在这里插入图片描述


TBD.


参考资料
【1】海同教育,Linux系统编程系列课程
【2】C语言技术网

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智驾

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

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

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

打赏作者

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

抵扣说明:

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

余额充值