• pythonのSocket


    TCP/IP
        三次握手   第一次 A向B 发送 syn 请求    然后B给A返回 syn + ack  A收到后,给B返回ack 握手成功。
    
    Socket 网络编程
        实现通信 要通过IP+Port
    
        Socket是对所有上层协议的封装,它只关注 发送数据 和 接收数据
    
    Socket使用方法:
        --发送端 伪代码
    
        import socket
    
        # 声明协议
        socket.TCP/IP
    
        # 建立连接
        connect(a.ip,a.port)
    
        # 发送请求
        socket.sent(hello)
    
        socket.recv()
    
        socket.close()
        ---------------------
    
        --接收端 伪代码
    
        import socket
    
        # 声明协议
        socket.TCP/IP
    
        # 监听端口 (监听IP,监听端口)
        listen(0.0.0.0,9990)
    
        # 等待链接
        waiting()
    
        # 接收数据
        recv()
    
        send()
    
    
    Socket Families (地址簇)
        socket.AF_UNIX 本机进程间通信
        socket.AF_INET IPV4
        socket.AF_INET6 IPV6
    
    Socket Types
        socket.SOCK_STREAM # for tcp
        socket.SOCK_DGRAM # for udp
        socket.SOCK_raw # 原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,而它可以。其次SOCK_RAW也可以处理特殊的
        socket.SOCK_RDM # 是一种可靠的UDP形式,即保证交付数据报但不保证顺序。

    客户端代码:

    #!/usr/bin/env python
    
    import  socket
    
    # 申明协议类型
    client = socket.socket() #申明socket类型,同事生成socket连接对象
    
    # 设置请求端口
    client.connect(("localhost",6969))
    
    while True:
        msg = input(">>:").strip()
        #发送数据
        #client.send(b"Hello World")
        client.send(msg.encode("utf-8"))
        data = client.recv(1024)
    
        print("recv:",data.decode())
    
    client.close()

    服务端代码:

    #!/usr/bin/env python
    
    import  socket
    
    # 声明协议
    server = socket.socket()
    
    server.bind(("localhost",6969)) # 绑定要监听的端口
    
    server.listen() # 监听
    
    print("等待通信中。。。")
    # 等待通信
    # conn就是客户端连过来,而在服务器端为其生成的一个连接实例
    conn,addr = server.accept() # 它会返回两个值 一个是连接对象,另一个是链接地址
    print("conn,addr",conn,addr)
    print("消息来啦...")
    while True:
        # 接受信息
        data = conn.recv(1024)
    
        print("recv:",data.decode())
    
        conn.send(data)
    
    server.close()
  • 相关阅读:
    Url参数的安全性处理
    redis安装学习
    Spring的IOC原理(转载)
    Linux下jdk&tomcat的安装
    App架构经验总结(转载)
    谈谈对Spring IOC的理解(转载)
    2018,扬帆起航!
    Lua随机问题
    为什么R#警告Warning Delegate subtraction has unpredictable result
    Dotween实现打字机效果,并向下滚屏
  • 原文地址:https://www.cnblogs.com/pengpengzhang/p/9528202.html
Copyright © 2020-2023  润新知