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()                      # 关闭客户套接字
  • 相关阅读:
    oc-多态
    swifit OC 混合开发注意
    KVC的底层实现原理
    如何解除循环引用
    Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/html" 的问题原因及解决方案
    什么是上下文(Context)???
    "this class is not key value coding-compliant for the key ..."问题的解决
    svn: Can't connect to host
    SpringMVC @SessionAttributes 使用详解以及源码分析
    spring学习之@ModelAttribute运用详解
  • 原文地址:https://www.cnblogs.com/niubin/p/7147438.html
Copyright © 2011-2022 走看看