zoukankan      html  css  js  c++  java
  • python进阶---Python中的socket编程

    初识socket编程

    一、前言

    socket基于CS架构(客户端服务端)的编程模型,在Python中是以socket模块存在的。

    Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

    所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。

    二、socket类型

    套接字格式:

    socket(family,type[,protocal]) 使用给定的地址族、套接字类型、协议编号(默认为0)来创建套接字。

    二、socket函数

    注意点:

    1)TCP发送数据时,已建立好TCP连接,所以不需要指定地址。UDP是面向无连接的,每次发送要指定是发给谁。

    2)服务端与客户端不能直接发送列表,元组,字典。需要字符串化repr(data)

    3、socket编程思路

    TCP服务端:

    1 创建套接字,绑定套接字到本地IP与端口

       # socket.socket(socket.AF_INET,socket.SOCK_STREAM) , s.bind()

    2 开始监听连接                   #s.listen()

    3 进入循环,不断接受客户端的连接请求              #s.accept()

    4 然后接收传来的数据,并发送给对方数据         #s.recv() , s.sendall()

    5 传输完毕后,关闭套接字                     #s.close()

    TCP客户端:

    1 创建套接字,连接远端地址

           # socket.socket(socket.AF_INET,socket.SOCK_STREAM) , s.connect()

    2 连接后发送数据和接收数据          # s.sendall(), s.recv()

    3 传输完毕后,关闭套接字          #s.close()

    UDP服务端

    ss = socket(socket.AF_INET,socket.SOCK_DGRAM)   #创建一个服务器的套接字
    ss.bind()       #绑定服务器套接字
    inf_loop:       #服务器无限循环
         cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送)
     ss.close()                         # 关闭服务器套接字

     UDP客户端

    cs = socket(socket.AF_INET,socket.SOCK_DGRAM)   # 创建客户端套接字
    comm_loop:      # 通讯循环
        cs.sendto()/cs.recvfrom()   # 对话(发送/接收)
    cs.close()                      # 关闭客户套接字
  • 相关阅读:
    洛谷P1208 [USACO1.3]混合牛奶 Mixing Milk 题解 结构体排序
    信息学竞赛中C语言的输入输出
    Python 关键字参数和可变参数
    大白话讲解神经网络算法,原理如此简单!
    idea debug flink1.12 sqlClient 源码
    Flink SQL如何保证分topic有序
    Flink 1.12.0 SQL Connector支持 Oracle
    Flink实战之Flink SQL connector支持并行度配置
    java程序中执行脚本时具有的是那个用户的权限呢?
    clickhouse日期等函数的使用
  • 原文地址:https://www.cnblogs.com/niubin/p/7147438.html
Copyright © 2011-2022 走看看