zoukankan      html  css  js  c++  java
  • python网络编程(一)

    # 套接字区分不同应用程序进程间的网络通信和连接,主要有3个参数:
    # 通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。
    socket(socket_family, socket_type, protocol=0)
    # socket_family 可以是 AF_UNIX 或 AF_INET。socket_type 可以是 SOCK_STREAM 或 SOCK_DGRAM。
    # 这几个常量的意义可以参考之前的解释。protocol 一般不填,默认值为 0。

    #TCP/IP
    tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    #UDP/IP
    udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    服务器端套接字函数
    s.bind() 绑定地址(主机,端口号对)到套接字
    s.listen() 开始 TCP 监听
    s.accept() 被动接受 TCP 客户的连接,(阻塞式)等待连接的到来
    客户端套接字函数
    s.connect() 主动初始化 TCP 服务器连接
    s.connect_ex() connect()函数的扩展版本,出错时返回出错码,而不是抛异常
    公共用途的套接字函数
    s.recv() 接收 TCP 数据
    s.send() 发送 TCP 数据
    s.sendall() 完整发送 TCP 数据
    s.recvfrom() 接收 UDP 数据
    s.sendto() 发送 UDP 数据
    s.getpeername() 连接到当前套接字的远端的地址
    s.getsockname() 当前套接字的地址
    s.getsockopt() 返回指定套接字的参数
    s.setsockopt() 设置指定套接字的参数
    s.close() 关闭套接字

    创建一个 TCP 服务器
    ss = socket() # 创建服务器套接字
    ss.bind() # 把地址绑定到套接字上
    ss.listen() # 监听连接
    inf_loop: # 服务器无限循环
    cs = ss.accept() # 接受客户的连接,服务器会调用 accept()函数等待连接的到来
    一旦接收到一个连接,accept()函数就会返回一个单独的客户的套接字用于后续的通讯。使用
    新的客户套接字就像把客户的电话转给一个客户服务人员。当一个客户打电话进来的时候,总机接
    了电话,然后把电话转到合适的人那里来处理客户的需求。
    这样就可以空出总机,也就是最初的那个服务器套接字,于是,话务员就可以等待下一个电话
    (客户的请求),与此同时,前一个客户与对应的客户服务人员在另一条线路上进行着他们自己的对
    话。同样的,当一个请求到来时,要创建一个新的端口, 然后直接在那个端口上与客户对话,这样
    就可以空出主端口来接受其它客户的连接。
    comm_loop: # 通讯循环
    cs.recv()/cs.send() # 对话(接收与发送)
    cs.close() # 关闭客户套接字
    ss.close() # 关闭服务器套接字由于服务器处在无限循环中,不可能会走到这一步

  • 相关阅读:
    EFCore
    PS-邮件发送异常信息
    python-Django
    Autofac
    swagger
    查看哪个程序占用了端口
    SQL SERVER-系统数据库还原
    破解root密码
    WebApi路由
    async,await.task
  • 原文地址:https://www.cnblogs.com/lovely7/p/5829744.html
Copyright © 2011-2022 走看看