Python深入学习中的难点知识通俗化

基础语法学习

日后慢慢补充

日后补充~~~思密达

基础网络通信学习

网络基础知识学习

什么叫网络

用户间能够进行数据共享

其中的重要概念

**Ip**:标识计算机在网络中的唯一位置
	ip版本号分为ipv6,ipv4
	范围 0 - 255 一共256种
	实际有效的范围 1 - 254
	局域网内的 IP 根据主机号的多少进行区分
	这些叫私有IP
		a类后三组为主机号	第一组为网络号 10.0.0.0~10.255.255.255
		b类后2组为主机号	俩组为网络号 172.16.0.0-172.31.255.255
		c类后一组为主机号 	前三组为网络号 192.168.0.0-192.168.255.255
port:标识计算机程序在计算机中的程序
	例如:一般的程序会在任务管理器中有pid,这是port -id的简写
	再到cmd中 netstat - a找到相对应的端口号就好了

udp套接字学习

简介

网络通信协议的一种方式,且他的通信协议是全双工的
安全性低,但适合普通的局域网内互传信息
	全双工:能够同时收发数据
	半双工:能接收发送但是不能同一时刻
	单工:只能接收数据

使用方法

#	创建套接字
#	可绑可不绑本地信息
#	完成接收发送功能
"""以上是基础思路"""
"""以下是案例"""
# udp聊天案例
import socket


def send_msg(udp_socket):
    """发送数据"""
    # 形参 在当前函数所使用的参数
    send_data = input("要发送的内容")
    dest_ip = input("对方IP")
    dest_port = int(input("对方端口"))
    udp_socket.sendto(send_data.encode("utf-8"), (dest_ip, dest_port))


def recv_msg(udp_socket):
    """接收数据"""
    recv_data = udp_socket.recvfrom(1024)
    print("%s%s" % (str(recv_data[1]), recv_data[0].decode("utf-8")))


def main():  # 我是在这个函数定义的udp_socket  调用并发送send_msg(udp_socket)
    # 创建套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 绑定信息
    udp_socket.bind(("", 7788))
    while True:
        print("-----udp聊天器------")
        print("--1 发送")
        print("--2 接收")
        print("--0 退出")
        op = input("请输入功能")
        if op == "1":
            # 发送
            # 获取要发送的内容
            send_msg(udp_socket)
        elif op == "2":
            # 接收并显示
            recv_msg(udp_socket)
        elif op == "0":
            break
        else:
            print("输入错误")


if __name__ == '__main__':
    main()

小结

特性:简单,不安全
目的:局域网内简单的通信

这是我第一次写这些,还有些什么不合适的,
需要订正的,请各大博主点拨我下 谢谢~~~😘

Tcp学习

简介

TCP协议,传输控制协议(英语: Transmission Control Protocol,
缩写为TCP) 是一种面向连接的,可靠的基于字节流的传输层通信协议
由IETF的RFC 793定义
TCP通信需要经过 创建连接、数据传送、终止连接 三个步骤。
TCP通信模型中, 在通信开始之前,一定要先建立相关的链接,才能发送数据,类似于生活中,打电话""

具体流程

Tcp, 打电话的模型,需要建立相关的链接,比udp稳定,保证数据的可靠
采用了应答机制
a到b发信息
收到会告诉b收到数据
如果响应时间过程会重发

与udp模型的对比

Udp,发信的模型,不需要建立相关链接,不安全
Tcp, 打电话的模型,需要建立相关的链接,比udp稳定,保证数据的可靠

代码实现

此处为服务端的代码实现
步骤
1.创建套接字 注意此时是sock_stream,udp则是sock_DGRAM
2.绑定本地信息:bind函数
3.设置成监听(被动)套接字
4.等待客户端链接
5.接收并发送数据
"""此处为服务端的代码实现"""
import socket


def main():
    # 创建套接字
    tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 绑定本地信息 bind  本地ip127.0.0.1  注意绑定的时候这是元组
    tcp_server_socket.bind(("", 7890))
    # 转为被动套接字 listen
    tcp_server_socket.listen(128)
    # 循环目的:调用多次accept,从而为多个客户端服务
    while True:
        print("等待新的客户端连接")
        # 等待连接accept  存储元组  发送过来的信息以及地址
        new_client_socket, client_Addr = tcp_server_socket.accept()
        # 循环目的:为一个客户端进行多次服务
        while True:
            # 分别打印值
            client_data = new_client_socket.recv(1024)
            print("客户端已经到来。。。%s" % str(client_Addr))
            print("客户端发送的请求。。。%s" % client_data.decode("utf-8"))
            # 如果client——data里面有值则返回
            # 否则跳出最近的循环
            if client_data:
                # 返回给客户端的值
                new_client_socket.send("success".encode("utf-8"))
            else:
                new_client_socket.close()
                break
        # 关闭当前套接字
        print("已经服务完毕")
        new_client_socket.close()

    tcp_server_socket.close()


if __name__ == '__main__':
    main()
此处为客户端代码的实现
步骤
1.创建套接字
2.链接服务器
3.发送或者接收数据
4.关闭套接字
import socket


def main():
    # 创建tcp套接字
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 链接服务器
    sever_ip = input("需要连接的服务器ip")
    server_port = int(input("需要连接的服务器端口号"))
    sever_addr = (sever_ip, server_port)

    tcp_socket.connect(sever_addr)

    # 发送/接收数据
    send_data = input("发送的数据")
    tcp_socket.send(send_data.encode("utf-8"))
    # 关闭套接字
    tcp_socket.close()


if __name__ == '__main__':
    main()

深入的学习

三次握手,四次挥手

三次握手详细概述
目的:是为了双方准备好资源
客户端
告诉服务端是否准备好资源了(并发送消息:是否准备好资源)
发送(我接收到了你的消息,并问你那边是否准备好了资源
告诉服务端 并发送消息 (我这边也准备好了资源)
四次挥手详细概述
目的:为了双方正确的释放资源
客户端服务端
告诉服务端我这里不接收值了告诉客户端我这边接收到了
这时候到服务端给客户端发送数据了
服务端客户

List item

端 |
| 告诉客户端我这里要关闭链接了|告诉服务端我这边接收到了 |
扩展学习
为什么四次挥手中服务端的的告诉接收到了的流程
告诉关闭链接流程不一起呢?
解释:因为关闭链接不会一下子就关闭,还需要处理一些基础的数据
会造成客户端未能及时的接收到应答数据包,所以为了避免这种bug
就变成了四次挥手

四次挥手

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值