• python——网络基础


    #1.网络通讯步骤
    确定对端IP地址->确定应用程序端口->确定通讯协议
    总结:网络通讯的过程其实就是一个(源端)不断封装数据包和(目的端)不断拆数据包的过程

    服务器:
    """"
    socket是一个接口、传送的对象 连接的通道
    SOCK_STREAM:TCP
    SOCK_Dgram:UDP
    family=AF_INRT  服务器之前的通信
    family=AF_UNIX  Unix不同进程间通信
    各sk绑定各自的端口
    conn是连接server和client的
    都是通过conn进行send
    evc
    
    """
    import socket
    #两个参数 family和type
    
    sk=socket.socket()
    
    address=('127.0.0.1',8000)
    
    sk.bind(address)
    #该过程为绑定
    # 内容必须为元组
    
    sk.listen(3)
    #容纳排列数
    
    print('waiting...')
    
    conn,addr=sk.accept()
    #将元组两个变量赋给两个变量
    
    #conn.send('约啊')
    
    # inp=input('>>>')
    # conn.send(bytes(inp,'utf-8'))
    
    
    
    """""
    
    client:
    <socket.socket fd=284, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>
    
    server: 
    (<socket.socket fd=524, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0,
     laddr=('127.0.0.1', 8000), raddr=('127.0.0.1', 53747)>, ('127.0.0.1', 53747))
    
    两个sk没有任何关系
    """
    
    """""
    server下的方法:一收一发
    bind()
    listen()
    accept()
    
    recv()#收
    send()#发
    sendall()#将send放在while中循环发送 即将传送的字符全部发送完
    
    clinent下的方法:
    connect()
    recv()
    send()
    sendall()
    
    close
    """""
    
    
    #2.客户端接收
    """""
    data=conn.recv(1024)
    print(data)
    """
    
    #conn.close()#只关闭了一个用户
    #sk.close()#关闭了整个server程序端
    
    
    #双方交互
    
    while 1:#套住下一个循环 与下部分被引效果一样
        conn,addr=sk.accept()
        while 1:
          try:
              data=conn.recv(1024)
          except Exception as e:
              break
            #上述异常处理是为了防止用户不用exit而选择 直接退出
          if not data:
           break
          """""
            #当客户结束时,接收下一个客户
            conn.close()
            conn,addr=sk.accept()
            print(addr)
            continue
            """"d
         print(str(data,'utf-8'))
         inp=input('>>>')
         onn.send(bytes(inp,'utf-8'))
    
    sk.close
    
    
    #当收到空的时候 是不会有反应的 参考qq 直接发送不会有反应

    客户:

    import socket
    sk=socket.socket()
    print(sk)
    address=('127.0.0.1',8000)
    
    sk.connect(address)
    
    #data=sk.recv(1024)#参数为指定收多少
    
    #print(data)
    #print(str(data,'utf-8'))#为了转义
    #无论是拿还是发 都是bytes类型
    
    #2.客户的发送
    """""
    data1=sk.send(bytes('hhh','utf-8'))
    
    """
    
    #双方进行不断地交互
    
    while True:
        inp=input('>>>')
        if inp =='exit':
            break
        sk.send(bytes(inp,'utf-8'))
        data=sk.recv(1024)
        print(str(data,'utf-8'))
    
    sk.close()
  • 相关阅读:
    Flask-wtforms 组件
    flask-session
    [架构漫谈]软件架构师如何工作
    [Python]爬取新型冠状病毒2.2至今的所有数据 python 2020.2.13
    [Python]爬取首都之窗百姓信件网址id python 2020.2.13
    假期学习【十三】信息领域热词分析系统--整体完成
    假期学习【十二】热词分析系统--初步展示
    [Python]python对csv去除重复行 python 2020.2.11
    pip工具下载速度慢的问题
    [Python]pyhon去除txt文件重复行 python 2020.2.10
  • 原文地址:https://www.cnblogs.com/zzzi/p/11489005.html
Copyright © 2020-2023  润新知