zoukankan      html  css  js  c++  java
  • socket TCP DPT 网络编程

    复习:
    ARP协议:
    广播和单播
    通过ip地址获得mac地址
    机器A发起一个arp请求(只包含A的ip地址)
    交换机接收到请求,广播这条消息
    所有的机器都会接受到这条请求,只有需要寻找的机器B的ip地址才能吻合
    并回应交换机的广播(并带上自己的mac地址)
    交换机通过单播的形式回复B的mac地址,并发送给A

    TCP协议:
    面向连接 可靠 全双工
    三次握手:建立tcp连接
    发数据
    四次挥手:断开tcp连接

    UDP协议:
    无连接 不可靠 速度快
    回环ip:
    127.0.0.1
    0.0.0.0

    内容总览:
    BS架构
    CS架构
    socket

    BS架构:
    brower 与 server
    浏览器与服务器

    例如:
    server brower
    博客园,百度,探宝,京东 360浏览器


    CS架构:
    client 和 server
    用户与服务器
    也就是说,客户需要安装一个客户端,然后才能与服务器取得联系

    例如:

    腾讯 qq应用
    百度网盘服务器 百度云应用

    总结:
    BS架构也是CS架构的一种

    pc端:
    BS架构(浏览器与服务器架构)是一种趋势,统一了程序的入口
    手机端:
    微信公众号
    小程序 都统一了程序的入口

    sockst:
    中文名字:套接字
    这个模块主要是解决了传输层与应用层的链接,分为TCP UDP两种编程模式

    TCP:

    #server
    import socket
        sk = socket.socket()#买手机
        sk.bind(('127.0.0.1',9000))#插手机卡
        sk.listen(5)#开机 5代表最大排队等待人数
        while True:
            try:
                conn,addr = sk.accept()#等电话
                print(conn,addr)#等到了电话 之后的所有信息收发都建立在conn这个连接上
                while True:
                    msg_send=input('>>>')
                    conn.send(msg_send.encode('utf-8'))
                    msg_rec = conn.recv(1024)#这里一定要传入参数,限制最大传入的字节
                    print(msg_rec.decode('utf-8'))
            except UnicodeEncodeError:
                pass
        sk.close()#关机
    

      



    #client
     import  socket
        sk = socket.socket()
        sk.connect(('127.0.0.1',9000))
        while True:
            msg_rec = sk.recv(1024)
            print(msg_rec.decode('utf-8'))
            msg = input('>>>')
            sk.send(msg.encode('utf-8'))
        sk.close()
    
    
    

      



    UDP协议:


    server端:
    import  socket
        sk = socket.socket(type=socket.SOCK_DGRAM)
        sk.bind(('127.0.0.1',9000))
        while True:
            msg,addr = sk.recvfrom(1024)
            print(msg.decode('utf-8'))
            if msg == b'q':
                break
            msg_send = input('>>>')
            sk.sendto(msg_send.encode('utf-8'),addr)
            if msg_send == 'q':break
    
        sk.close()
    
    
    

      



    client端:
    import socket
        sk = socket.socket(type=socket.SOCK_DGRAM)
        while True:
            msg_send = input('>>>')
            sk.sendto(msg_send.encode('utf-8'),('127.0.0.1',9000))
            if msg_send == 'q':break
            msg_recv,addr = sk.recvfrom(1024)
            if msg_recv == b'q':break
            print(msg_recv.decode('utf-8'))
        sk.close()
    
    
    

      

    
    
     
  • 相关阅读:
    第四阶段学习总结
    第三阶段学习总结
    第二阶段学习总结
    第一阶段内容的学习总结
    第四单元及OO课程总结
    关于工具的碎碎念
    第三单元博客总结
    第二单元博客总结
    第一单元作业总结
    实验五 单元测试
  • 原文地址:https://www.cnblogs.com/cavalier-chen/p/9643344.html
Copyright © 2011-2022 走看看