socket的阻塞与非阻塞同步:主动请求并等待IO操作完成的方式
异步:主动请求数据后,可以去处理其它任务,随后等待IO操作完毕的通知
阻塞:线程持续等待资源中数据准备完成,直到返回响应结果
非阻塞:线程直接返回结果,不会持续等待资源准备数据结束后才响应结果
socket()函数创建的socket默认是阻塞的
可以在创建socket时设置为非阻塞:(type参数中设置SOCK_NONBLOCK标志
转载
2023-05-29 13:12:25
499阅读
阻塞socket和非阻塞socket读操作对于阻塞的socket,当socket的接收缓冲区中没有数据时,read调用会一直阻塞住,直到有数据到来才返回。当socket缓冲区中的数据量小于期望读取的数据量时,返回实际读取的字节数。当sockt的接收缓冲区中的数据大于期望读取的字节数时,读取期望读取的字节数,返回实际读取的长度。对于非阻塞socket而言,socket的接收缓冲区中有没
转载
2024-04-10 18:13:14
22阅读
NIO 设计背后的基石:反应器模式,用于事件多路分离和分派的体系结构模式。
反应器(Reactor):用于事件多路分离和分派的体系结构模式
通常的,对一个文件描述符指定的文件或设备, 有两种工作方式: 阻塞 与非阻塞 。所谓阻塞方式的意思是指, 当试图对该文件描述符进行读写时, 如果当时没有东西可读,或者暂时不可写, 程序就进入等待 状态, 直到有东西可读或者可写为止。而对于非阻塞状态,
转载
2023-10-20 15:58:46
94阅读
注意 socket通信默认的情况下是属于阻塞形式通信,在recv与accept函数会进行阻塞 1.客户端正常退出的情况下,server端的con的通道会正常的关闭,recv直接赋值为空 2.在windows下,使用pycharm的强制终端客户端,会造成,con通道的破坏,造成服务器端的异常(可以通过捕获异常来避免),在linux程序端,不会出现该问题 3.在发送数据的时候,send为空的情况
转载
2024-03-07 21:03:41
151阅读
文章目录1. 阻塞模式四种阻塞API调用2. 非阻塞模式3. 优缺点对比 阻塞(blocking)、非阻塞(non-blocking):Windows套接字在阻塞和非阻塞两种模式下执行I/O操作。在阻塞模式下,在I/O操作完成前,执行的操作函数一直等候而不会立即返回,该函数所在的线程会阻塞在这里。相反,在非阻塞模式下,套接字函数会立即返回,而不管I/O是否完成,该函数所在的线程会继续运行。1.
转载
2023-07-28 10:34:32
193阅读
阻塞模式与非阻塞模式阻塞模式 程序碰到了一些耗时操作,无法继续向下走。例如在socket编程中,例如在send()即发送信息过程中,可能对方已经断开,可能网络等原因导致信息传递不通畅;在客户端的connect()函数中,可能地址不可达等原因。这些情况在阻塞模式中会造成线程中断等待,导致无法进行下一步操作,等超过一个固定时间还没有完成之后会产生异常。但是这种阻塞通常用于确定的几个连接地址并且必须准
转载
2023-12-27 09:41:12
10阅读
名称accept()接收一个套接字中已建立的连接使用格式#include #include int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);功能参数描述accept()系统调用主要用在基于连接的套接字类型,比如SOCK_STREAM和SOCK_SEQPACKET。它提取出所监听套接字的等待连接队列中第一个连接请求,创建
# Python Socket阻塞和非阻塞
Socket是一个在网络编程中常用的工具,它提供了一种实现网络通信的方法。在Python中,我们可以使用socket库来创建和管理Socket。在网络通信中,通常会遇到阻塞和非阻塞两种不同的模式。本文将介绍Python Socket的阻塞和非阻塞模式,并提供相应的代码示例。
## 1. Socket阻塞模式
在Socket阻塞模式下,当我们调用一个
原创
2023-09-22 02:28:25
463阅读
一、并发并行并发:表示执行多个任务的能力并行:表示同一时刻执行多个任务二、模拟socket发送http请求三大步骤:创建连接 要发送的东西 然后数据回来接收 socket默认情况下阻塞 1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3
4 import socket
5
6 client = socket
转载
2023-08-08 09:47:04
143阅读
一、项目背景 先说下我程序中Socket的用途吧,这样也好参照。我是想用手机的小程序跟阿里云服务器(Windows系统,非Linux系统)上的python程序进行通信,我的小程序会不定期拍摄照片上传到OSS云存储上,同时使用request(POST)的http请求将上传的图片的地址发送给阿里云上的python程序,然后python程序对地址的照
转载
2023-08-20 07:45:13
196阅读
1、获取socket对象my_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)AF_UNIX(基于文件的套接字)区别于AF_INET(基于网络的套接字),见 socket.SOCK_STREAM区别于SOCK_DGRAM,两者分别使用TCP和UDP协议2、阻塞与不阻塞my_socket.setblocking(0) 0-
转载
2023-09-20 16:21:19
77阅读
阻塞与非阻塞。所谓阻塞方式的意思是指, 当试图对该文件描述符进行读写时, 如果当时没有东西可读,或者暂时不可写, 程序就进入等待状态, 直到有东西可读或者可写为止。而对于非阻塞状态, 如果没有东西可读, 或者不可写, 读写函数马上返回, 而不会等待。 在Tcp通信的例子中,很多时候就是采用的阻塞式的工作方式:当接收tcp数据时,如果远端没有数据可以读,则会一直
转载
2024-02-10 00:03:38
59阅读
1.Send分为阻塞和非阻塞,阻塞模式下,如果正常的话,会直到把你所需要发送的数据发完再返回;非阻塞,会根据你的socket在底层的可用缓冲区的大 小,来将你的缓冲区当中的数据拷贝过去,有多大缓冲区就拷贝多少,缓冲区满了就立即返回,这个时候的返回值,只表示拷贝到缓冲区多少数据,但是并不代表发 送多少数据,同时剩下的部分需要你再次调用send才会再一次拷贝到底层缓冲区。 2.同步和异步是针
转载
2023-08-05 10:41:36
89阅读
Socket 阻塞与非阻塞模式 阻塞模式Windows套接字在阻塞和非阻塞两种模式下执行I/O操作。在阻塞模式下,在I/O操作完成前,执行的操作函数一直等候而不会立即返回,该函数所在的线程会阻塞在这里。相反,在非阻塞模式下,套接字函数会立即返回,而不管I/O是否完成,该函数所在的线程会继续运行。在阻塞模式的套接字上,调用任何一个Windows Sockets API都会耗费不确定的等待
转载
2023-08-07 12:56:17
171阅读
内容回顾tcp协议的粘包现象什么是粘包现象
发生在发送端的粘包:由于两个数据的发送时间间隔短+数据的长度小,所以由tcp协议的优化机制将两条信息作为一条信息发,为了减少tcp协议中的“确认收到”的网络延迟时间发生在接收端的粘包:由于tcp协议中所传输的数据无边界,所以来不及接收的多条数据会在接收端的内核的缓存端黏在一起本质:接收信息的边界不清晰解决粘包问题自定义协议1首先发送报头:报头长度4个字节
转载
2023-07-29 18:17:54
157阅读
对 socket 在阻塞和非阻塞模式下的各个函数的行为差别深入的理解是掌握网络编程的基本要求之一,是重点也是难点。阻塞和非阻塞模式下,我们常讨论的具有不同行为表现的 socket 函数一般有如下几个,见下表:connectacceptsend (Linux 平台上对 socket 进行操作时也包括 write 函数,下文中对 send 函数的讨论也适用于 write 函数)recv (Linux
转载
2023-08-10 22:23:40
457阅读
Linux的网络编程有很多种写法,最简单的是阻塞式(Blocking)的网络程序,其次有非阻塞(Non-Blocking),多路复用(Multiplexing),异步(Asynchronous)模型等。阻塞模型:阻塞模型是最为简单的一种网络编程模型。顾名思义,该模型中,socket都工作在阻塞模式下,在调用相应的网络函数时,如accept, recv, send时,这些函数都会阻塞线程,直到soc
转载
2023-10-24 11:19:21
142阅读
## 实现Java阻塞Socket和非阻塞Socket
### 1. 流程图
```mermaid
flowchart TD
A(创建Socket) --> B(设置阻塞/非阻塞)
B --> C(连接服务器)
C --> D(读取/写入数据)
D --> E(关闭Socket)
```
### 2. 代码实现
#### 2.1 创建Socket
要创建一
原创
2023-11-14 09:16:54
228阅读
准备阶段: 需要导入socket库和threading库,如没有请自行安装,本次任务是在python3.9的编译器下运行(版本可自己选择,并不需要相同)关于socket socket 的典型应用就是 Web 服务器和浏览器:浏览器获取用户输入的URL,
转载
2023-08-02 17:39:12
169阅读
文章目录一、阻塞非阻塞概念二、socket阻塞和非阻塞有哪些影响1.建立连接 connect2.接收连接 accept3.读操作 recv/read4.写操作 write/send5.简单小结三、设置套接字阻塞或非阻塞四、Linux fcntl函数介绍五、参考资料 一、阻塞非阻塞概念阻塞,就是调用我(函数),我(函数)没有接收完数据或者没有得到结果之前,我不会返回。非阻塞,就是调用我(函数),我(
转载
2024-05-29 07:11:10
103阅读