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中的socket(网络编程) -> 正文阅读

[网络协议]python中的socket(网络编程)

1. 网络编程概念

实现不同电脑中的软件(应用程序)之间的数据传递,即进程间的通信

2. 网络通信必备的两点

(1)IP:确定互联网中的哪一台电脑

(2)Port:确定主机中的哪个应用程序

有还有一个就是协议:IP地址+协议+端口=同源

3. 局域网使用的私有IP,A类、B类、C类三种

?4.? udp聊天器

import socket


def main():
    """实现收发数据的udp聊天器"""
    udp_socket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)
    addr = ("127.0.0.1", 7788)
    udp_socket.bind(addr)

    while True:
        send_data = input("请输入要发送的数据")
        udp_socket.sendto(send_data.encode(), ("127.0.0.1", 8080))
        recv_data = udp_socket.recvfrom(1024)
        print(recv_data[0].decode(), recv_data[1])

    udp_socket.close()


if __name__ == '__main__':
    main()

5.? TCP协议

tcp协议是面向连接的、可靠的、基于字节流的传输层控制协议。

可靠传输包含四个方面:

?6. udp和tcp通信模型

(1)udp

?(2)tcp

7. tcp客户端

import socket


def main():
    tcp_client_socket = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
    tcp_client_socket.connect(("127.0.0.1", 8000))
    send_data = input("请输入要发送的数据:")
    tcp_client_socket.send(send_data.encode())
    recv_data = tcp_client_socket.recv(1024)
    print(recv_data.decode())
    tcp_client_socket.close()


if __name__ == '__main__':
    main()

8. tcp服务器

import socket


def main():
    """循环为多个客户端服务,并且多次服务同一个客户端"""
    tcp_server_socket = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
    tcp_server_socket.bind(("127.0.0.1", 8000))
    # 使用socket创建的套接字默认是主动的,使用listen将其变为被动的,这样就可以接受别人的链接了
    tcp_server_socket.listen(128)
    while True:
        # 等待客户端链接,并返回服务客户端的套接字和客户端的地址
        client_socket, client_addr = tcp_server_socket.accept()
        while True:
            # 服务新到来的客户
            recv_data = client_socket.recv(1024)
            recv_data = recv_data.decode()
            # recv解堵塞有两种情况,一种客户端发送过来数据,第二种客户端调用了close
            # 客户端是发送不了空数据的,只要数据为空,一定是客户端调用了close
            if recv_data:
                print("服务器接收到的数据是:{}".format(recv_data))
                client_socket.send("服务器的响应".encode())
            else:
                break
        client_socket.close()
        print("当前客户服务已完毕")
    tcp_server_socket.close()


if __name__ == '__main__':
    main()

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-26 12:23:00  更:2021-07-26 12:24:08 
 
开发: 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 17:57:17-

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