python网络编程细节讲解socket 到 小型udp聊天器及 tcpweb服务器, 小型下载器(进度更新及大文件传输)简单实现。

Python实现udp协议的简单服务器和客户端通信 简单socket程序在两台电脑之间传输消息,分为客户端和服务端,分别在两台电脑上运行后即可进行简单的消息传输,也可以在一台电脑上测试,设置两个不同的端口即可 以下是代码在一台电脑上运行,开两个终端即可. 服务器端:import socket byte = 1024 #两个端口要保持一致 port = 25535 host = "" addr = (host, port)#创建套接字 sock 阅读详情

一)什么是Socket?

  • 可能介绍时稍加自己理解,有偏差的地方,还请见谅。

(1)首先我们了解计算机网络中的信息传输过程

  • (有七层,五层,四层计算机网络原理体系结构)我说下我学习的五层结构。
  • (1)主机A发送数据: 应用层-->运输层-->网络层-->数据链路层-->物理层
  • (2)中间经过路由器:物理层-->数据链路层-->网络层
  • (3) 知道到达主机B:物理层-->数据链路层-->网络层-->运输层-->应用层

(2)为何使用socket

  • 我们不再去细说每层所具有的功能,和使用的协议。但当经过运输层时,所有的外层首部字段(比如ip等)都将褪去(也就是剩下tcp/udp层次的)。 ip协议只是负责将数据传送给指定的主机。 到达运输层后,选用 tcp/udp 协议,利用端口,实现端到端的通信,也就是应用进程之间的通信。
  • 我的理解是,运输层通过tcp/udp 协议将数据传送给了应用进程,也就是应用层,应用层根据自己的协议来规实现功能。
  • (重点):那么如何利用运输层传递的信息数据呢?那就是socket!

(3) socket介绍(书上原话):

  • 大部分的网络协议都是由软件实现的(特别是协议栈中的高级协议),绝大多数的计算机系统都将运输层以下的网络协议在操作系统内核实现。(重点)应用程序想要执行网络操作,必须通过操作系统为应用程序操作网络所提供的的接口,这个接口通常称为网络应用编程接口 (Application Programming interface)。
  • 大多数操作系统都具有自己的网络API,但是随着时间的推移,套接字(Socket)API得到广泛应用。
  • 套接字API 定义了一组数据结构和操作。其中最关键的就是套接字数据结构(简称套接字)。套接字是一个非常复杂的数据结构,包括进行网络操作所需的各种资源(如缓存),各种参数(地址,端口号,协议类型等)。应用进程想要进行网络操作,必须先调用套接字API中定义的操作创建套接套接字数据结构,已获得进行网络操作所需的资源。
  • 套接字数据结构位于操作系统内核,应用程序不能直接访问数据结构,需要通过创建操作返回的套接字描述符来操作数据结构,此后,应用程序所进行的网络操作(建立连接,收发数据,调整网络通信参数等)都必须以该描述符为参数调用套接字API中的操作完成。

相信你已经初步了解了套接字。我在读到这里时,也豁然开朗了很多。

二)Tcp套接字,客户端/服务端调用套接字API基本流程

在这里插入图片描述

三)python socket 标准库基本使用介绍(官方文档)

(1)socket库介绍

  • 可以看到这个库,也是对底层调用 套接字API的封装,使操作更简洁,更智能。
  • socket-底层网络接口
    在这里插入图片描述

(2)用法:

1.创建套接字对象:  字段均可在官方文档上查阅:
import socket
socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)
"""
:param family:协议,一般表示ivp4(默认) 或者 ivp6
:param type: 套接字类型, SOCK_STREAM(默认)tcp 流

使用给定的地址族,套接字类型和协议号创建一个新的套接字。 
地址族应为AF_INET(默认设置),AF_INET6,AF_UNIX,AF_CAN,AF_PACKET或AF_RDS。 
套接字类型应为SOCK_STREAM(默认值),SOCK_DGRAM,SOCK_RAW或其他SOCK_常量之一。
协议号通常为零,可以省略,或者在地址族为AF_CAN的情况下,协议应为CAN_RAW或CAN_BCM之一。 
如果指定了fileno,则其他参数将被忽略,从而导致具有指定文件描述符的套接字返回。 
与socket.fromfd()不同,fileno将返回相同的套接字,而不是重复的套接字。 
这可能有助于使用socket.close()关闭分离的套接字。
"""

(3)什么是UDP报文首部格式:

** UDP

  • 用户数据报协议 UDP只在IP的数据报服务上增加了端口功能,特点:UDP是无连接的,尽最大努力交付的,没有拥塞控制,面向报文的,支持一对一,一对多,多对一和多对多交互通道。
    在这里插入图片描述

(4) udp的小例子(发送数据)

  • udp实现比较简单,直接创建连接,然后便可以发送数据,单工通信。
  • 重点是上面的tcp基本流程
  1 import socket
  2 
  3 def main():
  4     """ udp小例子"""
  5     # 创建套接字对象 (使用socket.SOCK_DGRAM,也就是udp数据报)
  6     udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  		# 也可进行端口绑定 bind,否则随机分配端口
  7     # 选择发送方地址(元组形式的ip地址和端口号)
  8     dest_addr = ('10.212.xxx.xxx', 8080)
  9     # 发送信息 
 10     send_data = input("请输入要发送的数据:")
 11     udp_socket.sendto(send_data.encode("utf-8"), dest_addr)
 12     # 关闭套接字
 13     udp_socket.close()
 14     print("-----end----")
 15 
 16 
 17 if __name__ == "__main__":
 18     main()

在这里插入图片描述

  • 本例子是在VMware虚拟机 uubntu系统上面编写,往物理机 windows 上发送数据,利用模拟软件接收。
  • 运行
    在这里插入图片描述
  • 结果:
    在这里插入图片描述

(5)UDP的小例子(接收数据)

  1 import socket
  2 
  3 def recv():
  4 
  5     # 1.创建套接字
  6     udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  7     # 2. 绑定信息
  8     local_addr = ("", 8081)   # ip地址和端口号,一般ip地址不用写,表示主机任
    何一个IP地址
  9     udp_socket.bind(local_addr)
 10 
 11     # 3. 等待对方发送数据
 12     print("正在等待接收数据--:")
 13     recv_data = udp_socket.recvfrom(1024) # 最大接收字节数
 14 
 15     # 4. 显示接受的数据
 16     print("接收到的数据为:")
 17     print(recv_data)
 18 
 19     # 5. 关闭套接字
 20     udp_socket.close()
 21     print('----end------')
 22 
 23 if __name__ == "__main__":
 24     recv()

  • 绑定信息
    bind() 函数
  • 接收函数
    在这里插入图片描述

(6) udp 聊天器的小例子

  1 import socket
  2 
  3 class Chat():
  4     """ udp简单聊天器 """
  5     def __init__(self):
  6         """ 初始化 """
  7         self.udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  8         self.udp_socket.bind(("", 7999))
  9 
 10     def welcome(self):
 11         print("欢迎登陆!输入序号开始聊天")
 12         print("1. 选择聊天对象")
 13         order = input()
 14         if order == "1":
 15             self.people()
 16 
 17     def people(self):
 18         print("以下是聊天列表:请选择序号进行聊天~")
 19         print("1.小明")
 20         order = input()
 21         if order == "1":
 22             print("开始聊天:输入 exit结束聊天")
 23 
 24     def send(self, send_data):
 25         self.udp_socket.sendto(send_data.encode("gbk"), ("192.168.91.128", 8080))
 26         print("内容已发送")
 27 
 28     def recv(self):
 29         recv_data = self.udp_socket.recvfrom(1024)
 30 #       print("%s,小明:%s" % (str(recv_data[1]),recv_data[0].decode("gbk") ))
 31         print(recv_data[0].decode("utf-8"))
 32         print("完成over~~")
 33 
 34     def chat(self):
 35         while True:
 36             send_data = input("请输入想要说的内容:")
 37             if send_data == "exit":
 38                 print("聊天结束!")
 					self.udp_socket.close()
 39                 break
 40             self.send(send_data)
 41             print("正在等待对方回应:...")
 42             self.recv()
 43 
 44 if __name__ == "__main__":
 45     a = Chat()
 46     a.welcome()
 47     a.chat()

  • 效果(比较死板,只能收发收发的运行)
    在这里插入图片描述

(四)TCP介绍及 客户端与服务器简单实现

(1)什么是tcp:

  • 传输控制协议(TCP):提供全双工,可靠交付服务。
  • TCP是面相连接的(字节流),并且在运输层时使用了流量控制和拥塞控制机制。
  • 与upd不同,tcp的端口队列不同,tcp的发送缓存和接收缓存都是分配给一个连接的,而不是一个端口。TCP的链接由四元组(源IP地址,源端口号 ,目的IP地址,目的端口号)标识。

(2) TCP是区分客户端和 服务器的

  • 如 (二) 中介绍的客户端服务器调用套接字接本流程。
    1. 创建套接字
    1. 对于客户端程序, 要做的就是 connect 链接服务器。服务器端,需要绑定,监听,和接收,返回新的发送套接字。
  • 课本C语言展示:
    在这里插入图片描述
    在这里插入图片描述

(3)服务器示例

  • 监听
    在这里插入图片描述

  • 接收链接
    在这里插入图片描述

  • 接收请求数据
    在这里插入图片描述

  • 接收套接字,发送数据
    在这里插入图片描述

  • 客户端程序发送请求; 一般都是(IP地址, 端口号)
    在这里插入图片描述

  • 代码展示:

  • 功能: 同一时刻为一台客户端服务,服务完成后,允许其他客户端链接。

  1 import socket
  2 
  3 def server():
  4     # 1. 创建套接字
  5     tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  6     # 2. 绑定本地信息(ip,端口)
  7     tcp_socket.bind(("", 7890))
  8     # 3.设置为监听状态(监听套接字)
  		# 连接数,这个数字还是有操作系统决定的,根据操作系统不一样,能连接多少也不一样
  9     tcp_socket.listen(128)
 10     print("我是服务器,我现在正在堵塞中,等待监听客户端请求。。。。")
 11 
 12     while True:
 13         # 4.等待客户端的链接(产生指定的接收套接字,服务该链接),采用阻塞的方式!
 14         client_socket, client_addr = tcp_socket.accept()
 15         print("我同意客户端的链接请求,下面是接受套接字为您服务。。。。")
 16         while True:
 17             # 5.接受对方(客户端)发送的数据请求(接收套接字),接受到的只是数据,不包含地址信>    息
 18             recv_data = client_socket.recv(1024).decode("utf-8")
 19             print("接收到的数据为: ", recv_data)
 20 
 21             #  如果发送的是 exit, 或者主动关闭客户端链接,那么服务结束(当对方客户端主动close>    关闭自己链接时,服务器会受到空值)
 22             if recv_data == "exit" or recv_data == '':
 23                 print("服务结束")
 24                 break
 25 
 26             # 回复给客户端的请求
 27             client_socket.send("hello world".encode("utf-8"))
 28 
 29             # 6.关闭套接字
 30         print("关闭客户端")
 31         client_socket.close()
 32     tcp_socket.close()
 33 
 34 
 35 if __name__ == "__main__":
 36     server()

  • 运行示例结果
    在这里插入图片描述

(五)实现简单的下载器

  • 简单的模拟文件的下载请求,和服务器传输下载文件。
  • 客户端
  1 import socket
  2 import sys
  3 import time
  4 
  5 
  6 _output = sys.stdout
  7 
  8 def client():
  9     """ 请求下载文件的客户端 """
 10     # 1. 创建套接字
 11     dw_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 12     # 2. 连接服务器
 13     dest_ip = input("请输入下载服务器的ip地址:")
 14     dest_port =int(input("请输入端口:"))
 15     dw_client.connect((dest_ip, dest_port))
 16 
 17     # 3. 获取下载文件名
 18     dw_filename = input("请输入要下载的文件名字:")
 19     # 4. 发送文件名字到服务器
 20     dw_client.send(dw_filename.encode("utf-8"))
 21 
 22 
 23     # 7.保存文件中的数据到文件中
 24     i = 1
 25     with open("[new]" + dw_filename, "ab+") as f:
 26         while True:
 27             #  接受文件,大小为1M  1024 --> 1k
 28             dw_data = dw_client.recv(1024*1024)
 29             if dw_data == b'001':
 30                 print('接收完毕!')
 31                 break
 32             f.write(dw_data)
 33             time.sleep(0.1)
 34             _output.write("\r传输数据次数: %d" % i)
 35             i += 1
 36     _output.flush()
 37     print("文件下载完毕请查看!,本次共传输:  %d 次!" % i)
 38     # 8. 关闭套接字
 39     dw_client.close()
 40 
 41 
 42 if __name__ == "__main__":
 43     client()
        

  • 下载服务器端:
  1 import socket
  2 import time
  3 
  4 def read_data(f, n):
  5     """ 生成器形式,
  6         当文件过大时,我们需要分次读取,读取太大要考虑内存大小,读取太小要考虑到读取操作上的>    开销
  7     """
  8     content = b''
  9     for i, line in enumerate(f):
 10         content += line
 11         if (i+1) % n == 0:
 12             yield content
 13             content = b''
 14     else:
 15         # 存在最后不到 n行的数据不能被返回,这里返回一下
 16         yield content
 17 
 18 
 19 def send_file(dw_server, filename):
 20     """ 完成传输文件的功能"""
 21     f = None
 22     # 尝试打开文件
 23     try:
 24         f = open(filename, "rb")
 25     except Exception as e:
 26         print("没有该文件%s" % filename)
 27 
 28     # 当文件正常打开,发送数据
 29     if f:
 30         for i in read_data(f, 5):
 31             print("开始读入数据")
 32             # 回复给客户端的下载请求
 33             dw_server.send(i)
 34             time.sleep(0.1)
 35         else:
 36             # 循环正常结束,则执行关闭操作
 37             f.close()
 38         # 发送结束标志,说明数据传输完毕!
 39         dw_server.send(b'001')
 40     else:
 41         print("open files error")
 42 
 43 
 44 def server():
 45     # 1. 创建套接字
 46     tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 47     # 2. 绑定本地信息(ip,端口)
 48     tcp_socket.bind(("", 7890))
 49     # 3.设置为监听状态(监听套接字)
 50     tcp_socket.listen(128)
 51     print("我是服务器,我现在正在堵塞中,等待监听客户端请求。。。。")
 52 
 53     while True:
 54         # 4.等待客户端的链接(产生指定的接收套接字,服务该链接),采用阻塞的方式!
 55         client_socket, client_addr = tcp_socket.accept()
 56         print("我同意客户端的链接请求,下面是接受套接字为您服务。。。。")
 57         while True:
 58             dw_filename = client_socket.recv(1024).decode("utf-8")
 59             print(dw_filename)
 60             if dw_filename == "exit" or dw_filename == '':
 61                 print("服务结束")
 62                 break
 63             send_file(client_socket ,dw_filename)
 64         # 6.关闭套接字
 65         print("关闭客户端")
 66         client_socket.close()
 67     tcp_socket.close()
 68 
 69 
 70 if __name__ == "__main__":
 71     server()


结果展示:

  • 客户端:
    在这里插入图片描述

敬请期待下节,<<多线程版udp聊天室>> 以及 《多版本并发web服务器实现》及相关tcp可靠传输等网络知识记录

Python 基础 之 网络 socket 使用 udp (SOCK_DGRAM)结合 线程 Thread 实现简单的实时聊天功能 Python 基础 之 网络 socket 使用 udp (SOCK_DGRAM)结合 线程 Thread 实现简单的实时聊天功能 目录 Python 基础 之 网络 socket 使用 udp (SOCK_DGRAM)结合 线程 Thread 实现简单的实时聊天功能 一、简单介绍 二、实现原理 三、注意事项 四、效果预览 五、实现步骤 六、关键代码 附录:NetAssist (网络调试助手)可以百度搜索下载即可 一、简单介绍 Python是一种跨平台的计算机程序... 阅读详情

相关推荐

KEIL MDK实战:如何用fromelf工具解析STM32的ELF文件结构(附完整命令行)

本文详细介绍了如何使用KEIL MDK中的fromelf工具解析STM32的ELF文件结构,包括内存段分析、符号表追踪和反汇编关键函数等实战技巧。通过完整的命令行示例,帮助嵌入式开发者优化内存占用、排查运行时问题,并提升STM32项目的开发效率。

weixin_42631411的博客 185

【Python】tcp文件下载器

客户端 import socket import os def main():     client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)          # send_ip = input('请输入目的ip:')          # send_port = int(input('请输入目的

milankunde的博客 677

SpringBoot3 + OAuth2.1实战:5分钟搞定授权码模式(含完整代码)

本文详细介绍了如何在SpringBoot3环境中快速实现OAuth2.1的授权码模式,包括环境配置、核心安全实现及完整代码示例。通过Spring Security集成,开发者可以高效构建企业级安全认证系统,解决版本兼容性问题,提升开发效率。

weixin_29216353的博客 138

运输层---运输层概述 UDP协议与TCP协议

运输层是面向通信功能中的最高层,又是面向用户功能中的最底层。 一、运输层的作用 AP~n~代表各个进程,(通讯并不是主机和主机之间的通信,实际上是应用进程之间的通信) IP协议的作用范围:主机和主机之间进行通信 端口:端口实际上是一个标识符,标志着是哪个进程发送的数据,或要交给哪个进程。 运输层协议TCP和UDP的作用范围:从进程到进程 网络层(IP协议)是为主机之间提供逻辑通信,而运输层...

weixin_42649617的博客 3502

MATLAB闪退别慌!5分钟搞定Windows系统预设文件修复(附详细截图)

本文针对MATLAB在Windows系统下频繁闪退的问题,提供了快速有效的解决方案。核心在于修复或重置损坏的MATLAB预设文件,通过图文并茂的五步法,指导用户定位AppData目录、重命名预设文件夹,从而让MATLAB自动生成全新配置以解决闪退。文章还涵盖了问题诊断、设置备份及进阶排查方法,帮助用户彻底根除启动故障。

weixin_29234423的博客 925

多边形裁剪算法

多边形裁剪算法 刚参加工作就跟多边形刚上了,对于多边形的裁剪做一些简单的总结。 多边形裁剪主要有四种算法 Greiner-Hormann裁剪算法 Sutherland-Hodgman算法 Vatti裁剪算法 Weiler-Atherton裁剪算法 作为一名想要成为优秀算法工程师的程序员,我们不能只会使用,而不知道其原理,倘若如此,我们无法做到应用于本身业务上的定制化的修改。 Greiner–H...

papalqi 6726

Python使用UDP协议与多线程实现简单聊天室

Python使用UDP协议与多线程实现简单聊天室

陈c 4338

目标检测YOLO实战应用案例100讲-【目标检测】缺陷检测(二)

在工业生产中总是经常遇到裂痕、划痕等产品的表面缺陷问题,机器视觉行业对于表面检测相比前几年已经有很大的突破,对于产品表面的划伤、污迹等检测已经不再是难点。在金属、玻璃、手机屏幕、液晶板等行业表面检测上应用广泛。但由于该类缺陷形状不规则、深浅对比度低,而且往往会被产品表面的自然纹理或图案所干扰。因此,表面划痕缺陷检测对于正确打光、相机分辨率、被检测部件与工业相机的相对位置、复杂的机器视觉算法等要求非常高。

qq_36130719的博客 728

运输层协议之TCP UDP

因特网为应用程序提供两个运输层协议。即TCP/UDP。当你对因特网创建一个新的应用时,首先要做出的决定是,选择UDP还是TCP。每个协议为调用他们的应用程序提供了不同的服务集合。如图所示接下来对这两种传输方式进行介绍1.TCP服务TCP服务模型包括面向连接的服务和可靠数据传输服务。当某个应用程序调用TCP作为其运输协议时,该应用程序就能获得来自TCP的两种服务。    面向连接的服务:在应用层数据...

q_all_is_well的博客 632

手把手教你学simulink(83.2)--分布式能源场景实例:使用Simulink构建一个典型的光伏发电分布式能源系统模型

*分布式能源系统(Distributed Energy System, DES)**是指由多个小型发电单元、储能装置和负载组成的电力系统,这些组件通常分布在不同的地理位置。DES包括太阳能光伏(PV)、风力发电、微型燃气轮机、储能电池等。这种系统能够提高能源利用效率、减少传输损耗,并增强电网的稳定性和可靠性。在DES中,各组件之间的协调与控制至关重要。通过使用Simulink,我们可以模拟和优化这些系统的运行情况,研究其动态行为,并设计有效的控制策略。

MHD0815的博客 1104

OSCP-Challenge 2 - Relia

使用andrea:PasswordPassword_6登录远程桌面,在c盘根目录下发现一个计划任务的ps,文件,修改执行的exe位木马,获取到milana用户的反弹shell。,发现开放了一个8000端口,但是我们外部是访问不到的,它对应的页面是/var/www/internal/,这个目录下的文件我们是可以访问的,把这个文件打个包放到本地分析下。其中数据的可以直接连接mssql,但是端口是49965,不过在数据库中没发现什么可用的信息,但是可以修改密码直接进后台,这个可以先放放。

羽的博客 7760

计算机网络教程第五版|微课版 - 第六章 应用层 - 重要概念【补充】

第六章 应用层【补充】 本章的重要概念 开发一种新的网络应用首先要考虑的问题就是网络应用程序在各种端系统上的组织方式和它们之间的关系,即网络应用程序体系结构。目前流行的网络应用体系结构主要有客户/服务器体系结构和对等体系结构。 域名到 IP 地址的解析是由分布在互联网上的许多域名服务器程序(即域名服务器)共同完成的。互联网采用层次树状结构的命名方法,任何一台连接在互联网上的主机或路由器有一个唯...

Enderman_xiaohei的博客 1761

硬核干货|C#+EtherCAT协议:高精度多轴伺服运动控制通信实战

本文摘要: 文章聚焦工业自动化领域多轴伺服运动控制的高精度与实时性需求,基于C#与EtherCAT协议实现完整解决方案。EtherCAT凭借微秒级同步、分布式架构等优势成为首选,而C#通过优化GC策略和实时线程可满足工业控制要求。文章从工程落地角度,详细拆解EtherCAT的PDO/SDO通信机制与多轴同步控制逻辑,提供完整的C#代码实现(主站初始化、伺服配置、运动控制等),所有代码均通过汇川/松下伺服实测验证。核心亮点包括:纯C#原生开发、工业现场高频问题解决方案、硬件适配指南,帮助开发者快速掌握高精度多

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 575

计算机网络:运输层(TCP/UDP协议)

运输层协议概述: 从通信和信息处理的角度看, 运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最底层。注意应用层跟运输层是在非网络的条件下完成的(主机内部)。其中运输层跟网络层是重要的。IP协议在网络层,TCP协议在运输层。 运输层的两个主要协议: 运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。运输层还要对收到的报...

SanfordZhu的博客 4002

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

计算机网络-运输层协议 TCP/UDP协议(TCP与UDP对比,流量控制,拥塞控制,三次握手,四次挥手)

这篇博客总结了网络运输层协议 TCP和UDP 主要是TCP协议 内容包含: 0.运输层概述 1.TCP也UDP对比 2.TCP可靠传输的原理 3.TCP流量控制与拥塞控制 4.TCP的三次握手和三次挥手

五更依旧朝花落的博客 924

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Hadoop小白必看:5分钟搞懂HDFS、YARN和MapReduce的关系

本文通过快递系统和工厂流水线的生动比喻,帮助Hadoop初学者快速理解HDFS、YARN和MapReduce三大核心组件的关系与协作机制。文章详细解析了分布式存储、资源调度和计算框架的工作原理,并提供了性能优化技巧,是入门大数据领域的必读指南。

weixin_33734785的博客 631

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

利用python中的socket工具实现一个服务端接受多个客户端的数据测试:

利用python中的socket工具实现一个服务端接受多个客户端的数据测试: 客户端测试工具: 代码: import socket #创建服务端对象 tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #绑定IP地址和端口(参数类型必须是 元组) tcp_server_socket.bind(("",8080))#""中无内容默认访问本机 #设置监听,传输整参数,表示设置的最大连结数 tcp_server_soc

python技术专家 1983

通过python带你打造udp聊天软件

大家好,我是天空之城。 今天给大家带来,通过python带你打造udp聊天软件。 udp是位于ip网络层之上的运输层,类似于tcp协议,再往上就是socket抽象层和用户应用层。socket又称为套接字,简单理解就是两个节点之间为了通信,在各自家里装了一部电话可以实现通信,只管发送,不管接收。但这与tcp的双向传输是不同的。 首先,自己先下载安装一个网络调试助手小软件。 第一部分,通过pycharm发送数据 def main(): # 1.创建套接字 udp_s = socket.sock

littlespider889的博客 2051

python实现多人聊天udp_PYTHON——TCP&UDP:socketserver实现多人聊天

主要类型该模块有四个比较主要的类,其中常用的是TCPServer 和UDPServer。1. TCPServer2.UDPServer3.UnixStreamServer,类似于TCPServer提供面向数据流的套接字连接,但是旨在UNIX平台上可用;4.UnixDatagramServer,类似于UDPServer提供面向数据报的套接字连接,但是旨在UNIX平台上可用;这四个类型同步地...

weixin_39692271的博客 231

传输层TCP协议和UDP协议

传输层协议

qq_44700820的博客 3902

运输层—UDP与TCP协议

在运输层中有两个主要的协议:用户数据报协议UDP和传输控制协议TCP。UDP在传送数据前不需要先建立连接。远地主机的运输层在收到UDP的报文后,不需要给出任何确认。虽然UDP不提供可靠的交付,但在某些情况下它是一种最为有效的工作方式。TCP提供面向连接的服务,在传送数据之前必须先建立连接,数据传送后会释放,同时由于其可靠性,面向连接的运输服务,也就增加了许多的开销。下面是两种协议的各种应用及应用层...

lariy 1743

【计算机网络】运输层(5)

目录端口用户数据报协议UDP传输控制协议TCP滑动窗口协议 网络层实现的是两台主机之间的通信 但数据实际是需要从一台主机的某个进程到另一台主机某个进程 运输层就是提供应用进程间的逻辑通信,其满足 复用:发送方不同的应用进程都可以使用同一个运输层协议传送数据 分用:接收方的运输层在解析报文首部后能把数据正确交付目的应用进程 根据应用程序的不同需求,运输层有2种不同的运输协议:面向连接的TCP、无连接的UDP 端口 运输层通过协议端口号来确定应用进程 运输层将报文送到特定端口,剩下的工作由TCP或UD

zizi7的专栏 358

python实现多人聊天udp_python实现的多任务版udp聊天器功能案例

本文实例讲述了python实现的多任务版udp聊天器。分享给大家供大家参考,具体如下:说明编写一个有2个线程的程序线程1用来接收数据然后显示线程2用来检测键盘数据然后通过udp发送数据要求实现上述要求总结多任务程序的特点参考代码:import socketimport threadingdef send_msg(udp_socket):"""获取键盘数据,并将其发送给对方"""while True...

weixin_42356378的博客 382

计算机网络-运输层(UDP/TCP协议)

文章目录前言一、计算机网络二、运输层复用和分用UDPTCP总结提问环节 前言 上一篇我们简介了应用层,介绍了在应用层两个重要的协议DNS和HTTP,在这篇,我们来认识运输层,这给层有两个非常重要的协议UDP和TCP,其中TCP更是这层的大哥,是不是突然发现计算机网络非常有趣,一层一层的了解,每层都有大BOSS。话不多说,开始吧! 一、计算机网络 还是每篇都出现的这张图吧!这张图可谓是开启计算机网络的秘钥,也能让你有一个总体的框架, 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分

weixin_44181180的博客 5505

python实现udp聊天室_python网络编程基础--socket的简介,以及使用socket来搭建一个简单的udp小程序...

socket介绍:socket(简称套接字),是进程间通讯的一个工具,他能实现把数据从一方传输到另一方,完成不同电脑上进程之间的通讯,它好比数据的搬运工。socket应用:不夸张来说,只要跟网络相关的应用程序或者软件都使用到了socket, 比如:微信,qq等使用socket创建udp网络程序的流程:1,创建客户端套接字2,发送/接收数据3,关闭套接字使用程序展现流程 :(使用的 ide为pych...

weixin_39664696的博客 356

计算机网络中的运输层TCP、UDP

应用层 任务是通过应用进程间的交互来完成特定网络应用,应用层协议动议的是应用进程间通信和交互规则。如DNS、HTTP协议等; 运输层 负责向两台主机中进程之间的通信提供通用的数据传输服务,TCP协议; 网络层 把运输层产生的报文段或用户数据报封装成分组或包进行传送;另一个任务是选择合适的路由,使源主机运输层所传下来的分组能够通过网络中的路由器找到目的主机。 运输层协议 概述 运输层向它上面的应用...

mashaokang1314的博客 1042
上一篇: ubuntu系统解决无法输入中文的问题及使用搜狗输入法配置细讲
下一篇: 并发编程基础:计算机组成原理及操作系统相关基础知识总结
我是py呀
博客等级 码龄8年 205粉丝 130原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值