zoukankan      html  css  js  c++  java
  • socket架构

    套接字基本概念

    Socket是应用层与Tcp/ip协议族通信的中间软件抽象层,它是一组接口。在设计模式中,socket其实就是一个门面模式,它把复杂的tcp/ip协议族隐藏在socket接口后面,对用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议。
    socket位置:在传输层和应用层之间
    套接字分为两种:

    • 基于文件型:AF_UNIX(af=address family)
    • 基于网络型:AF_INET/AF_INET6

    套接字工作流程

    tcp链接建立及释放

    backlog syn请求进入到backlog(半连接池)

    测试代码

    tcp

    服务端
    import socket
    
    ser = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #基于流式通信
    ser.bind(('127.0.0.1',8888)) #以元祖形式
    ser.listen(5) #最多多少链接,半连接池
    conn,addr = ser.accept() #接受链接和地址,建立一个tcp链接
    msg = conn.recv(1024)
    print('msg from client is ',msg.decode('utf-8'))
    msg_repl = 'replay'
    conn.send(msg_repl.encode('utf-8'))
    conn.close()
    ser.close()
    
    客户端
    import socket
    
    cli = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #基于流式通信
    cli.connect(('127.0.0.1',8888)) #以元祖形式
    # conn,addr = cli.accept() #接受链接和地址
    msg = 'hello world'
    cli.send(msg.encode('utf-8'))
    data = cli.recv(1024)
    print(data)
    # cli.close()
    
    

    udp

    服务端
    from socket import *
    ip_port= ('127.0.0.1',8080)
    buffer_size = 1024
    
    udp_server = socket(AF_INET,SOCK_DGRAM)
    udp_server.bind(ip_port)
    
    while True:
        data = udp_server.recvfrom(buffer_size)
        print(data)
    udp_server.close()
    
    客户端
    from socket import *
    ip_port= ('127.0.0.1',8080)
    buffer_size = 1024
    
    udp_server = socket(AF_INET,SOCK_DGRAM)
    
    while True:
        data = udp_server.sendto('htllo'.encode('utf-8'),ip_port)
    udp_server.close()
    
  • 相关阅读:
    ABAP接口用法
    监听textarea数值变化
    The first step in solving any problem is recognizing there is one.
    Wrinkles should merely indicate where smiles have been.
    God made relatives.Thank God we can choose our friends.
    Home is where your heart is
    ABAP跳转屏幕
    Python 工具包 werkzeug 初探
    atom通过remote ftp同步本地文件到远程主机的方法
    Mongodb学习笔记一
  • 原文地址:https://www.cnblogs.com/chrrydot/p/9827792.html
Copyright © 2011-2022 走看看