网络编程part2

网络接口
1、socket  套接字 ==》BSD socket ==》用于网络通信的一组接口函数。socket api  application interface
2、ip+port 地址+端口===》地址用来识别主机
     端口用来识别应用程序

UDP  用户数据报

特征: 无链接  不可靠 大数据

注意:
1、数据和数据之间有边界     
2、发的次数必须和收的次数相对应    并且收的长的不要少于发的字节不然后面的数据会被丢弃
3、recvfrom()  会阻塞 !
4、sendto() 不阻塞

127.0.0.1   是指自己

c/s模型          ----> client/serve模型
1、bs http https
      cs http,自定义协议
2、bs 功能相对简单
      cs 复杂
3、bs 客户端通用
      cs 客户端专用

p2p 模型

TCP

服务器端
socket()-----bind()------listen()----accept-----read()----write()---read()---close()
    
listen() 进入监听状态,看有没有人接入函数


TCP端
socket()---connect()----write()----read()----close()

TCP 有链接    ---- 在发送数据之前先进行链路的创建,链接两端再进行发送数据

SYN 标志位       ACK 应答          


三次握手     客户端先发出SYN 给服务器端,服务器端回复客户端
三次握手之后建立链接,两端开始发收数据
 
四次挥手     客户端先发出FIN信号 服务器先对之前的数据进行应答,然后滞后一点            点时间发出断开请求,并且对之前的数据进行应答。


------------------
可以一次性把数据全拿走  没有边界  ,,发和收的次数不需要对应  (可以发三次收一次全收到)          //流式套接字   先发的数据一定在前面  收到的数据数取决于                    recv的个数
 
64k的内存
发的太多太快,套接字写满之后tcp会产生 写 阻塞/

tcp中有      双缓冲区
  发 和  收  分别在两个不同的空间里面。

流式套接字

数据有顺序
发送和接收的次数


套接字打开了两个   1、监听套接字
                                      1对多
                 2、通信套接字
                      1对1
 

相关推荐

  1. 网络编程part2

    2024-07-16 01:06:04       22 阅读
  2. 网络编程part3

    2024-07-16 01:06:04       22 阅读
  3. 网络编程学习part1

    2024-07-16 01:06:04       23 阅读
  4. 【python学习】网络编程2

    2024-07-16 01:06:04       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 01:06:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 01:06:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 01:06:04       58 阅读
  4. Python语言-面向对象

    2024-07-16 01:06:04       69 阅读

热门阅读

  1. typora图片问题以及快捷键问题汇总

    2024-07-16 01:06:04       21 阅读
  2. [Selenium]C#语言中的等待策略的应用与实现

    2024-07-16 01:06:04       18 阅读
  3. 刷题——有效括号序列

    2024-07-16 01:06:04       24 阅读
  4. Ningx配置前端http缓存

    2024-07-16 01:06:04       23 阅读