• 高级编程tcp,udp


    1.四层:应用层 tcp/ip 传输层 网络层 链路层
    2.七层:会话,表示,应用,传输,网络,数据链路,物理层。
    理论上是7层,实际上是四层
    3.端口,就是区分进程的。区分唯一进程的标记,pid是一台电脑上的进程,在多台电脑上就是端口
    4.80端口是http,21端口是给ftp上的,0-25535,知名
    1024-65535 动态端口
    5.命令,netstat -an

    四.ip地址

    五.socket
    tcp慢,不丢数据
    tcp快,容易丢数据

    udp绑定
    单工:只能收
    半双工:对讲机
    全双工:电话

    发数据
    udpSocket.sendto('你好'.encode("utf-8"),('192.168.0.107',8080))

    接收数据
    最多能收1024个字节,前面赋值两个数据,就是代表接收到的是两个值,前面需要赋值2个变量
    a,b = udpSocket.recvfrom(1024)

    #绑定信息,只能绑定本地的,发送方不需要进行绑定,随机就可以,接收方需要绑定,ip地址也可以为空
    udpSocket.bind(("",8080))

    作业:
    写一个程序,进行发数据和接收。无限接受
    东哥语录,自己问自己问题

    收到的数据在给人返回去叫空包
    echo是空包

    研究 globle全局变量的引用

    作业2.模拟QQ聊天程序,多线程测试

    from socket import *
    #创建套接字
    udpSocket = socket(AF_INET,SOCK_DGRAM)
    #绑定信息,只能绑定本地的,发送方不需要进行绑定,随机就可以,接收方需要绑定
    udpSocket.bind(("",8080))

    # #ip地址确定接收方是谁
    # udpSocket.sendto(b"haha",('192.168.0.107',8080))
    #发送中文,在字符串后面添加encode("utf-8")
    # udpSocket.sendto('你好'.encode("utf-8"),('192.168.0.107',8080))
    udpSocket.sendto('你好'.encode("utf-8"),('192.168.0.107',8080))

    #使用udp发送的数据,每发一次信息建立一个连接,ip和端口号
    #使用套接字,每次的端口号都是不一样的,python3中不能使用字符串,只能使用 byte类型
    # udpSocket.sendto(b"haha",('192.168.119.115',8080))

    #收,最多能收1024个字节,前面赋值两个数据,就是代表接收到的是两个值,前面需要赋值2个变量
    a,b = udpSocket.recvfrom(1024)
    print(a.decode())

    from socket import *

    def main():
    udpSocket = socket(AF_INET, SOCK_DGRAM)

    udpSocket.bind(("", 6789))

    #收,打印
    while True:
    recvInfor = udpSocket.recvfrom(1024)
    print("[%s]:%s"%(str(recvInfor[1]), recvInfor[0].decode("gb2312")))


    if __name__ == "__main__":
    main()




  • 相关阅读:
    对象序列化流使用
    字符输入流结合字符打印流实现复制文件
    python 安装一些 直接使用pip无法安装的包 的方法
    linux记不住
    SIP
    uniapp不同型号手机适配
    uniapp app头部渐变
    vue安卓苹果下载链接合并
    Typescript
    Nodejs
  • 原文地址:https://www.cnblogs.com/wangjunxi/p/11832208.html
Copyright © 2020-2023  润新知