网络编程重要知识点总结

Linux网络编程知识点总结 Linux网络编程知识点总结 TCP/IP 基本套接字编程 TCP/UDP套接字编程 并发服务器 名字与地址转换 网络编程具体应用 原始套接字 TCP/IP 协议层次 三次握手机制 服务器必须准备好接收好客户的连接请求,通过socket()、bind()、listen()函数来完成,客户端调用connect()函数进行主动打开,客户端向服务器发送一个SYN分节到服务器端 服务器端收到客户端发来的SYN分节后,必须发送ACK对其进行确认,同时发送一个SYN分节给客户端,表示接收客户端建立的连接请求 阅读详情

1、Socket默认是否是阻塞的?阻塞体现在哪里?

Socket在默认情况下是阻塞的。阻塞体现在以下几个方面:

  • 当对一个socket执行connect操作时,如果连接没有建立,程序会一直等待直到连接成功或失败。
  • 当对一个socket执行recv操作时,如果没有数据可接收,程序会一直等待直到接收到数据。

2、如何将socket编程为非阻塞?

可以通过设置socket的阻塞选项来将其编程为非阻塞。

# 非阻塞

sock.setblocking(False)

3、IO多路复用的作用?

IO多路复用是一种处理多个IO操作的技术,它可以在单个线程中同时处理多个socket的IO操作。使用IO多路复用可以大大提高程序的效率和性能,因为不需要为每个socket创建一个新的线程或进程。检测多个socket是否发生変化。

操作系统检测socket是否发生変化,有三种模式(主要select.select、select.epoll):

  • select.select(Windows支持)可以实现IO多路复用,它可以在多个socket之间进行轮询,以检测哪些socket可以进行读写操作。最多1024个socket;循环检测(水平触发)。
  • poll:不限制监听socket个数;循环检测(水平触发)。
  • select.epoll(Windows不支持)是Linux系统下的IO多路复用实现方式,与select.select类似,但是可以支持更多的socket数量。不限制监听socket个数;(回调方式触发)。

4、提高并发方案

4.1多线程

4.2多进程

4.3异步非阻塞模快(Twisted) ,scrapy框架(单线程完成并发)

什么是异步、非阻塞?

-非阻塞,不等待。 比如,创建socket对某个地址进行connec,获取连接、接收数据recv时默认都会等待;连接成功或接收到数据,才执行后面。

如果置setblocking(False),以上两个过程就不再等待,但是会抛出BlockingIOError的错误,只要捕获即可。

-异歩:通知,执行完成之后自动执行回调函数或自动执行某些操作(通知)。 比如做爬虫中向某个地址baidu.com发送请求,当请求执行完成之后自动执行回调函数。

Python模块:Twisted和Scrapy框架

  • Twisted是一个异步网络框架,它提供了异步和非阻塞的编程模型,可以用于编写高性能的网络应用程序。
  • Scrapy框架是一个基于Twisted的异步爬虫框架,它可以实现单线程并发爬取多个网站。

 

5、什么是同步阻塞?

同步阻塞是指程序按照顺序逐个执行任务,如果某个任务需要等待资源或数据就绪,程序会一直等待直到资源或数据就绪。例如,上面的代码示例中,程序会逐个遍历key list中的每个元素,并发送HTTP请求。如果请求需要等待响应,程序会一直等待直到响应返回。

import requests
key_list = ['xx','db','sb']
for item in key_list:
    ret = requests.get('https://www.baidu.com/s?wd=%s' %item)
    print(ret.text)

 

6、封装的例子和概念

在提供的代码中,有一个封装的概念示例:class Foo(object):。在这个类中,__init__()方法是构造函数,用于初始化对象的属性。append()方法是对象的一个方法,用于向对象的数据列表中添加元素。通过实例化这个类并调用其方法,可以对列表进行操作。这种将操作和数据封装在一起的方式称为封装,这是面向对象编程中的一个重要概念。通过封装,可以隐藏对象的内部状态和实现细节,只暴露必要的接口,从而增强代码的可维护性和可复用性。

class Foo(object):
    def __init__(self,data,girl):
        self.row = data
        self.girl = girl

    def append(self,item):
        self.row.append(item)

v=[Foo([11,22],'雪梨'),#毎个都有一个append方法
    Foo([22,33],'冰糖'),#毎个都有一个append方法
    Foo([33,44],'糖宝'),]#毎个都有一个append方法

for item in v:
    item.append(123)
    print(item.girl)

 

计算机考研常见面试题 写在前面 本人参加20考研,由于复试没有具体要求会问哪几门课,所以我就找了网上一些常见的计算机专业的面试题,整理如下 主要结构: 数据库 软件工程 操作系统 计算机组成原理 计算机网络 数据结构 C++ Java 数据库 1、数据:数据库中存储的基本对象。 数据库:长期存储在计算机内的、有组织的、可共享的数据集合。 数据库管理系统:专门用于建立和管理数据库的一套软件。对外部程序提供访问数据库的方法,对内进行数据管理。 数据库系统:与和数据库相关的整个系统,一般由数据库、数据库管理系统、应用程序、数 阅读详情

相关推荐

LwIP在国产MCU的落地实践:从协议栈优化到网络稳定性实战

本文详细介绍了LwIP协议栈在国产GD32F407 MCU上的移植与优化实践,涵盖硬件平台选择、驱动适配、协议栈调优和网络稳定性提升策略。通过内存管理优化、实时操作系统集成和性能测试,为工业物联网应用提供高可靠性网络通信解决方案,显著提升数据传输效率和系统稳定性。

m2n3b4v5c6的博客 270

java网络编程知识点总结

NewBeeMu的博客 347

海思Hi3516DV300实战:从yolov5模型训练到Sort跟踪算法的完整部署流程

本文详细介绍了在海思Hi3516DV300芯片上部署YOLOv5目标检测与Sort多目标跟踪算法的完整流程。内容涵盖从特定场景数据训练YOLOv5模型、模型格式转换(PyTorch到ONNX再到Caffe),到利用海思NNIE引擎生成WK模型并进行端侧集成与优化的全链路实战经验,旨在解决嵌入式设备上实时人流量统计等实际应用挑战。

weixin_29034963的博客 341

TCP/IP网络编程知识点汇总

qq_37763204的博客 921

海康工业相机SDK开发实战:从环境搭建到实时图像采集(附避坑指南)

本文详细介绍了海康工业相机SDK在Windows平台上的开发实战流程,涵盖从环境搭建、运行时库路径配置到实时图像采集的全过程。重点解析了MVS SDK部署、设备连接、参数设置及图像处理等核心环节,并提供了实用的避坑指南和错误排查方法,帮助开发者构建稳定的机器视觉系统。

weixin_29248611的博客 849

PHP特性知识点总结

(1)类型转换之前提到过的是字符串转为整型。其实php手册里面提到了各种类型的转换。先把他放在这里。我们按照php手册上的顺序来介绍,只介绍几个比较常用的。①转化为bool②转化为整型int。

m0_73605862的博客 1296

图解java网络编程知识点

qq_31205803的博客 269

基于NXP1778的CAN自动波特率检测

一、概念 NXP1778芯片内部自带一个CAN控制器。CAN模块由两部分组成:控制器和验收滤波器。所有的寄存器和RAM都以32位字宽度来访问。 CAN自动波特率检测主要用于以一种CAN的转换的产品中。产品中CAN部分的波特率以前都是通过网页中修改然后配置下去的,依据实际情况的考虑,如果CAN部分的波特率能够根据客户设备的改变而自动改变,将会增加其灵活性。   二、原理 根据CAN控制器的

菜鸟的痕迹专栏 5274

Java学习教程,从入门到精通,Java 网络编程语法知识点及案例代码(84)

java.net 包中提供了两种常见的网络协议的支持: TCP:TCP(英语:Transmission Control Protocol,传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP 层是位于 IP 层之上,应用层之下的中间层。TCP 保障了两个应用程序之间的可靠通信。通常用于互联网协议,被称 TCP / IP。 UDP:UDP (英语:User Datagram Protocol,用户数据报协议),位于 OSI 模型的传输层。一个无连接的协议。提供了应用程序之间要发送数

qq_45746668的博客 981

用RFSoC ZU47DR搭建软件无线电原型:从零配置Vivado到生成第一个射频信号

本文详细介绍了如何使用Xilinx RFSoC ZU47DR开发板搭建软件无线电原型系统,从Vivado环境配置到生成首个射频信号的全流程。通过整合ARM处理器、FPGA逻辑和高速ADC/DAC,该平台为通信算法验证提供了高效解决方案,特别适合SDR开发者和通信工程师快速实现原型设计。

weixin_26763955的博客 592

3、硬件工程师笔试面试学习汇总——器件篇目录(2025版本)

硬件工程师笔试面试学习

XU157303764的博客 7631

后端网络编程知识点总结

这一篇是网络编程的面试知识点的总结。不打算从计算机网络的基础讲起,只是摘要性的总结一下知识点,更多的内容请从经典的书籍中获取。1、tcp与udp的区别(必问) 可靠性  首先,TCP是一个面向连接的协议,需要三次握手。具有可靠性,但是并不是百分百的可靠,它通过序列号确认,超时重传等机制提供数据的可靠传送或者故障的可靠通知,但并不能保障数据一定会被对方接收。   UDP是一个无连接的协议。UDP不保

lijun538的专栏 5568

PCL:读写pcd点云的两种方式

本文介绍了PCL读写点云的两种方式:PCDReader,PCDWriter;loadPCDFile,savePCDFile.

孙悟空 1万+

网络编程相关知识点速查

网络编程相关知识点速查网络编程相关知识点速查一、获取网络信息相关的函数二、IPv6服务器流程三、IPv6和IPv4的TCP和UDP交互图四、select 函数就绪的条件五、read函数返回值的含义六、shutdown时的交互流程 网络编程相关知识点速查 我们在做网络相关的开发时,经常会记不清一些知识点,以下我把需要牢记的知识点分享给大家。希望对您有所帮助。 一、获取网络信息相关的函数 二、IPv6服务器流程 三、IPv6和IPv4的TCP和UDP交互图 四、select 函数就绪的条件 五、read

joinwilson的专栏 212

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

网络编程的知识点

一、网络编程概述 1.1 网络编程简介 其实,所谓的网络编程,就是编写程序,实现让同一个网络中的机器实现数据的传递,实现通信。 Java是 Internet 的语言,它从语言级上提供了对网络应用程序的支持。 Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在 Java 的本机安装系统里,由 JVM 进行控制,并且Java 实现了一个跨平台的网络库,因此程序员面对的是一个统一的网络编程环境,很容易开发常见的网络应用程序。 1.2 网络编程需要具备的条件 如果要实现两台机器之间

j2974500224的博客 1967

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

网络编程知识点

网络知识用点  转自: http://blog.youkuaiyun.com/wlh_flame/article/details/6381780 (评论:虽然问题不大,但是新手基本会遇到这些问题的,所以还很重要)   ——记录一些小问题,陷阱 1. 调用bind时,如果地址是0(就是INADDR_ANY那个宏),就绑定本地所有IP,如果端口是0,就随机选择一个可用的端口(

linuxheik的专栏 621

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

国庆day3---网络编程知识点脑图整合

qq_53268516的博客 469

Python 网络编程关键知识点大揭秘

Socket(套接字)是网络通信的基石,是应用层与传输层之间的编程接口。它就像不同房间(应用程序)之间传递信息的窗口。本文介绍了 Python 网络编程的关键知识点,从网络协议、IP 地址和端口号等基础概念,到 Socket 编程以及常见网络协议的应用。网络编程在开发网络应用、服务器端程序等方面至关重要,通过掌握这些知识,读者可以开发出如 Web 服务器、网络爬虫、即时通讯工具等各种网络应用。

Tekin 是深耕技术 20 年的全栈实战派专家,精通 Go/Python/Java 等多语言开发。博客专注技术原理与实战结合,深度解析 Python 高阶编程、Go 语言架构、数据库优化等硬核内容。涵盖并发编程、机器学习、云原生等前沿领域,通过真实案例拆 914

网络编程知识点总结

1:网络编程(理解) (1)网络编程:用Java语言实现计算机间数据的信息传递和资源共享 (2)网络编程模型 (3)网络编程的三要素 A:IP地址 a:点分十进制 b:IP地址的组成 c:IP地址的分类 d:dos命令 e:InetAddress B:端口 是应用程序的标识。范围:0-65535。其中0-1024不建议使用。 C:协议 UDP:数据打包,有限制,不连接,效

ArcticOcean's blog 1120

Java网络编程知识点总结

网络编程概述 计算机网络 ·是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来, 在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统 网络编程 ·在通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据交换 网络编程三要素 IP地址 ·要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定 要接收数据的计算机和识别发送的计算机,而IP地址就是这个标识号。也就是设备的标识 端口 ·网络的通信,本质是两

暴力扬 1310

Java中的网络编程 知识点总结Note

软件架构C/S架构:全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、美团app、360安全卫士等软件。B/S架构:全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有IE、谷歌、火狐等。问题1:如何准确地定位网络上一台或多台主机问题2:如何定位主机上的特定的应用问题3:找到主机后,如何可靠、高效地进行数据传输网络通信要素如何实现网络中的主机互相通信通信双方地址IP端口号。

weixin_54372875的博客 2738

01网络编程-基础知识点

1、端口作用:用来标识应用程序(进程)port:2个字节 0~655350~1023 知名端口 (已被占用,其他人不能使用)自定义端口:1024~65535一个程序可以有多个端口,但一个端口不能标识多个应用程序netstat -anp 可查看占用的端口号OSI七层模型应用层表示层会话层传输层网络层数据链路层物理层物数网传会表应物理层:双绞线接口类型,光纤的传输速率等等数据链路层:mac负责收发数据网络层:ip 通过ip 给两台主机提供路径选择。

weixin_45174023的博客 178

网络编程基础知识点总结

网络编程基础知识点总结 一. 概述 本文是网络编程系列的第一篇文章,所以不讲代码,主要是网络编程的一些基础知识,下面的这些知识点主要是对java网络编程这本书的归纳与整理。有兴趣的同学可以看看。 我们知道计算机之间的通信要经过一系列复杂的过程,计算机之间通过传输介质、通信设施和网络通信协议互联,实现资源共享和数据传输。而我们的网络编程就是使用程序使互联网的两个(或多个)计算机之间进行数据传输。当然java语言,为了实现两个计算机之间的数据传输,提供了一系列的接口,使得开发人员可以方便的实现。 二 、网络体系

weixin_39289579的博客 3671

网络编程 知识点及练习

网络编程摘要 本文介绍了网络编程的基础知识,包括IP地址、DNS解析、服务器概念和网络通信协议。重点讲解了基于TCP和UDP协议的Socket编程实现方法,通过Java代码演示了用户登录验证和客户咨询两个实际案例。主要内容涵盖:IP地址的组成与配置、Socket通信模型、多线程处理请求、UDP数据包传输等核心概念,为网络应用程序开发提供了基础技术指导。文章采用理论结合实践的方式,帮助读者掌握网络通信的基本原理和实现方法。

wtklpc的博客 893
上一篇: python——进程常用功能
下一篇: 协程的概念,协程+遇到IO切换实现单线程提供并发
python_198
博客等级 码龄3年 359粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

python_198

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

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

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

打赏作者

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

抵扣说明:

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

余额充值