网上的代码大都是官方的例子,不直观、不彻底。 结合网上的东西花了一周的时间。这是一篇socket应用级别的文章,更深入的了解(自己写的):最大视角-从Unix底层 理解 python的io模型、python异步IO、python的select、Unix的select、epollfileno 的本质:可读写文件一图了解 socket原理Python 标准输入输出通常:一些简单的概念结合在一起就变得混
转载
2024-02-29 23:01:14
53阅读
一. 什么是TCP协议 TCP协议,传输控制协议(Transmission Control Protocol,缩写为TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)主要的适用场景: 1.适合于对传输质量要求较高,以及传输大量数据的通信。 2.在需要可靠数据传输的场合,通常使用TCP协议。 3.HTTP/H
转载
2023-08-04 10:33:33
130阅读
# Java Socket 非阻塞接收 TCP 的实现
在网络编程中,Java 的 Socket 是一个非常重要的工具,尤其是进行 TCP 通信时。然而,在某些情况下,我们希望使用非阻塞方式来接收数据。这一过程可以通过 Java NIO(即非阻塞输入/输出)库来实现。本文将阐述如何实现 Java Socket 非阻塞 TCP 接收,并提供代码示例。
## 流程步骤
下面是实现 Java So
首先socket在默认情况下是阻塞状态的,这就使得发送以及接收操作处于阻塞的状态,即调用不会立即返回,而是进入睡眠等待操作完成。
一.发送选用send(这里特指TCP)以及sendto(这里特指UDP)来描述 在阻塞模式下send操作将会等待所有数据均被拷贝到发送缓冲区后才会返回。 如果
转载
2024-01-06 11:38:22
91阅读
1.网络七层模型及主要协议2.TCP的“三次握手”和四次挥手三次握手Step1:首先客户端向服务器端发送一段TCP报文;Step 2:服务器端接收到来自客户端的TCP报文之后,结束LISTEN阶段,并返回一段TCP报文;Step 3:客户端接收到来自服务器端的确认收到数据的TCP报文之后,明确了从客户端到服务器的数据传输是正常的,结束SYN-SENT阶段,并返回最后一段TCP报文。此后客户端和服务
转载
2023-07-23 16:38:27
231阅读
# 如何在 Java 中实现非阻塞的 TCP Socket 接收
在现代网络编程中,非阻塞 IO(NIO)是一个非常重要的概念。它能够使得程序在执行 IO 操作时不被阻塞,从而可以进行其他任务。这篇文章将指导你如何在 Java 中实现非阻塞的 TCP socket 接收。
## 整体流程
以下是实现非阻塞 TCP socket 接收的步骤:
| 步骤 | 描述 |
|----|------
# Python TCP阻塞实现
## 介绍
在网络编程中,TCP是一种可靠的、面向连接的协议。在Python中,我们可以使用`socket`模块来实现TCP编程。本文将教会你如何使用Python实现TCP阻塞。
## 流程
下面是实现TCP阻塞的整个流程,通过一个表格展示每个步骤:
| 步骤 | 描述 |
| ------ | ------ |
| 创建socket对象 | 创建一个新的s
原创
2023-08-14 05:39:42
178阅读
Socket编程可以分为阻塞和非阻塞两种开发模式阻塞模式是指在指定 Socket上调用函数执行操作时,在没有完成操作之前,函数不会立即返 回。例如,服务器程序在阻塞模式下调用 accepto函数等待来自客户端的连接请求时,将会阻塞 服务器线程,直至接收到一个来自客户端的连接请求。默认创建的 Socket为阻塞模式 非阻塞模式是指在指定 Socket上调用函数执行操作时,无论
转载
2023-10-10 15:19:46
75阅读
在阻塞模式下,在IO操作完成前,执行的操作函数将一直等候而不会立刻返回,该函数所在的进程会阻塞在这里。相反,在非阻塞模式下,套接字函数会立即返回,而不管IO是否完成,该函数所在的线程将继续运行。阻塞模式编程简单,但效率低;非阻塞模式编程复杂,但效率高,比如:举个简单的例子,你点击一个发送按钮:
如果是阻塞式的,那么在发送未完成之前,界面就会"卡死"。
而非阻塞式的,无论数据有没有完成,你都继续进行
转载
2023-11-20 08:48:03
148阅读
对于recv和send函数的返回完成,实际上并不是将缓冲区数据成功送入网络链路,而只是成功发送到系统缓冲区或 者是系统缓冲区有数据了!这个系统缓冲区应该是驱动里分配的缓冲区,NTFS默认大小8k,一般WINDOWS 4K。在发包时候,因为TCP提供的是流服务,导致WINSOCK接口会根据缓冲区和数据包的实 际情况自由的对数据包进行组合和分割发送,也就是当客户端连续多次发送包时(<100ms)
转载
2024-06-02 22:57:58
80阅读
import socket
# 创建套接字
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定本地信息
tcp_server_socket.bind(("", 7890))
# listen 监听
tcp_server_socket.listen(128)
# 等待客户端的链接 accept
new
转载
2023-06-16 20:36:57
180阅读
最近看了许多关于网络编程的资料,自己小记一下,以方便以后查找。什么是阻塞socket,什么是非阻塞socket。对于这个问题,我们要先弄清什么是阻塞/非阻塞。阻塞与非阻塞是对一个文件描述符指定的文件或设备的两种工作方式。 阻塞的意思是指,当试图对该文件描述符进行读写时,如果当时没有东西可读或者暂时不可写,程序就进入等待状态,直到有东西可读或者可写为止。 非阻塞的意思是,当没有东西可读或者不可写时,
转载
2024-04-25 16:19:03
188阅读
上次为大家介绍了阻塞式多线程服务端程序和阻塞式客户端程序的设计方法,但是在上文的最后也提到过,服务器程序会因为建立连接和关闭连接而频繁的创建和关闭线程会产生大量的内存碎片,从而导致服务端程序不能保证长时间的稳定运行。因此我在这里为大家介绍另外一种建立服务器和客户端程序的方法,即建立非阻塞式的服务器和客户端程序。 那什么是非阻塞呢?非阻塞是相对于阻塞而言,阻塞指的是在进行一个操作的时候,
转载
2024-01-06 07:44:45
191阅读
将一个socket 设置成
阻塞模式
和
非阻塞模式,
使用fcntl方法,即: 设置成非阻塞模式:先用fcntl的F_GETFL获取flags,用F_SETFL设置flags|O_NONBLOCK; 即: flags = fcntl(sockfd, F_GETFL, 0);
转载
2024-03-14 16:08:14
164阅读
# Python MQTT 接收阻塞实现指南
作为一名刚入行的开发者,你可能对如何使用Python实现MQTT接收阻塞感到困惑。本文将为你提供一个详细的指南,帮助你理解整个流程,并提供代码示例。
## MQTT 接收阻塞流程
首先,让我们通过一个表格来了解实现MQTT接收阻塞的基本步骤:
| 步骤 | 描述 |
| --- | --- |
| 1 | 安装MQTT库 |
| 2 | 初始化
原创
2024-07-21 03:30:42
44阅读
# Python 使用 TCP 阻塞的介绍
在网络编程中,TCP(传输控制协议)是一种重要的通信协议,具有可靠性和顺序传输的特点。本文将探讨如何在 Python 中实现 TCP 阻塞,并附带相关的代码示例和图示。
## TCP 概述
TCP 是一种面向连接的协议,为应用程序提供一个可靠的双向字节流。与 UDP (用户数据报协议) 相比,TCP 提供了数据传输的完整性和顺序性,适合需要高可靠性
原创
2024-09-01 05:46:02
23阅读
## Python TCP 非阻塞
TCP(传输控制协议)是一种可靠的、面向连接的协议,被广泛用于网络通信中。在Python中,我们可以使用socket库来实现TCP通信。默认情况下,socket库使用阻塞方式进行通信,即当一个操作(如接收数据)发生时,程序将一直等待直到操作完成。然而,有时候我们希望程序在等待操作完成的同时能够继续执行其他任务,这就是非阻塞IO的概念。
在本文中,我们将介绍如
原创
2023-08-20 04:19:48
683阅读
package concurrentTest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
转载
2024-07-12 07:38:03
47阅读
在Python中,你使用socket.setblocking(0)使它无阻塞。在C中,它更复杂,(一方面,你需要在BSD风格O_NONBLOCK和几乎不可区分的Posix风味O_NDELAY之间进行选择,这完全不同于TCP_NODELAY),但它是完全相同的想法。你在创建套接字之后,但在使用之前这样做。 (主要的机械差异是send,recv,connect和accept可以返回而没有做任何事情。你
转载
2023-06-08 11:31:20
118阅读
1. socket【套接字】 大家都知道,任何一门语言要读写文件,都会调用操作系统提供的文件API,比如open、read、write、close等等。那如果要通过网卡去收发数据呢?这时候就需要操作系统提供的socket了。 python可以通过在文件头部执行以下语句,调用操作系统提供的socket API(python标准socket库)。im
转载
2023-10-25 22:40:56
73阅读