IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Python网络编程 -> 正文阅读

[系统运维]Python网络编程

目录

计算机网络相关概念

IP地址

IP地址的表现形式

IP地址的作用

查看电脑的ip地址

端口

端口号

计算机的传输协议

TCP协议

UDP协议

socket套接字

套接字的作用

用python开发TCP客户端

开发TCP服务器端

开发TCP服务器端---升级版


计算机网络相关概念

IP地址

IP 地址就是标识网络中设备的一个地址,好比现实生活中的家庭地址。

IP地址的表现形式

1.ipv4:是由点分十进制组成

2.ipv6:是由冒号十六进制组成

IP地址的作用

IP 地址的作用是标识网络中唯一的一台设备的,也就是说通过IP地址能够找到网络中某台设备。

查看电脑的ip地址

打开终端

1.linux和macos输入命令:ifconfig

2.Windows输入命令:ipconfig

端口

端口是传输数据的通道。每运行一个程序都会有一个端口,想要给对应的程序发送数据,找到对应的端口即可。每一个端口都有一个端口号,想要找到端口,找到对应的端口号即可。

端口号

端口号有65536

1.知名端口号:是指众所周知的端口号,范围从0 到 1023,这些端口号一般固定分配给一些服务,(比如21端口分配给FTP(文件传输协议)服务,22端口分配给SSH(安全外壳协议,主要用于远程连接与文件传输),25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,443端口分配给HTTPS服务)等等

2.动态端口号:一般程序员开发应用程序使用的端口号称为动态端口号。动态端口号的范围是从1024到65535,如果程序员开发的程序没有设置端口号,操作系统会在动态端口号这个范围随机生成一个给开发的应用程序使用。当运行一个程序默认会有一个端口号,当程序退出时,所占的端口号就会自动被释放。

计算机的传输协议

TCP协议

TCP协议(Transmission Control Protocol):它是一种面向连接的(连接,确定)、可靠的(数据100%可达。但缺点是:为了让数据100%可达,就会不停的校检,因此传输就会很慢)、基于字节流的传输层通信协议

TCP协议的特点:

1.面向连接:通信双方必须先建立好连接,才能进行数据的传输,数据传输完成后,双方必须断开此连接,以释放系统资源。

2.可靠的:① TCP 采用发送应答机制 ②超时重传 ③错误校验 ④流量控制和阻塞管理(根据带宽情况调整传输速率,最终保证数据100%可以传输)

3.基于字节流

UDP协议

和TCP一样,都是数据传输协议,优点与TCP协议相反:速度快,但是可能会在传输过程中丢包。

对于要求速度快,不需要100%传达的(如视频通话)就可以用UDP协议。

socket套接字

是进程之间通信一个工具,好比现实生活中的插座,所有的家用电器要想工作都是基于插座进行,进程之间想要进行网络通信需要基于这个 socket。

套接字的作用

负责进程之间的网络数据传输,好比数据的搬运工。

用python开发TCP客户端

# 1.导入模块
import socket

# 2.创建套接字对象
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 3.建立和服务器端的连接
tcp_socket.connect(("192....", 8000))  # 这个IP地址就是你自己电脑的ip地址

# 4.发送数据
send_data = '你好服务器,我是客户端'
tcp_socket.send(send_data.encode('gbk'))

# 5.接收数据
recv_data = tcp_socket.recv(1024).decode('gbk')
print(f'这是服务器端发送给客户端的数据:{recv_data}')

# 6.关闭套接字
tcp_socket.close()

开发TCP服务器端

import socket
# 1.创建套接字对象
tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 1.1设置端口复用
tcp_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)

# 2.绑定IP和端口
tcp_server.bind(("", 8000))

# 3.设置监听
tcp_server.listen(128)

while True:
    # 4.等待客户端连接
    new_socket, IP_addr = tcp_server.accept()

    # 5.接收客户端数据
    recv_data = new_socket.recv(1024).decode('gbk')
    print(f'这是来自客户端:{IP_addr}发送过来的信息:{recv_data}')

    # 6.发送给客户端数据
    send_data = '我是服务器,我已经收到了你的信息!'.encode('gbk')
    new_socket.send(send_data)

    # 7.关闭套接字
    new_socket.close()

如果运行没报错,可以用NetAssist来看看是否可以成功接收信息。

开发TCP服务器端---升级版

import socket

'''
服务器的主要功能:接收处理与客户端之间互相来信; 
'''


class WebServer(object):
    def __init__(self):
        # 创建套接字对象
        self.tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # 设置端口复用
        self.tcp_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
        # 绑定IP和端口 设置监听
        self.tcp_server.bind(("", 8000))
        self.tcp_server.listen(128)

    def handle_client(self, new_socket, IP_addr):
        # 接收客户端数据
        recv_data = new_socket.recv(1024).decode('gbk')
        print(f'客户端{IP_addr}发送消息:{recv_data}')
        # 发送数据给客户端
        send_data = "我是客户端,我已经收到了你的消息!".encode('gbk')
        new_socket.send(send_data)
        # 关闭套接字
        new_socket.close()

    def start(self):
        while True:
            # 等待客户端连接
            new_socket, IP_addr = self.tcp_server.accept()
            # 处理客户端数据
            self.handle_client(new_socket, IP_addr)



if __name__ == '__main__':
    # 1.创建套接字对象,并设置端口复用; 2.绑定IP和端口; 3.设置监听;
    ws = WebServer()

    # 4.等待客户端连接; 处理客户端数据(5.接收; 6.发送数据; 7.关闭套接字)
    ws.start()

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 13:11:55  更:2022-10-17 13:15:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:19:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码