• socket套接字模块


    一、what

    socket模块就是应用层与tcp/ip协议族通信的中间层——抽象层

    它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

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

    基于文件类型的套接字族 AF_UNIX

    基于网络类型的套接字族 AF_INET

    二、基于TCP的套接字

    服务端

    ss = socket() #创建服务器套接字
    ss.bind()      #把地址绑定到套接字
    ss.listen()      #监听链接
    inf_loop:      #服务器无限循环
        cs = ss.accept() #接受客户端链接
        comm_loop:         #通讯循环
           cs.recv()/cs.send() #对话(接收与发送)
         cs.close()    #关闭客户端套接字
    ss.close()        #关闭服务器套接字(可选)

    客户端

    cs = socket()    # 创建客户套接字
    cs.connect()    # 尝试连接服务器
    comm_loop:        # 通讯循环
       cs.send()/cs.recv()    # 对话(发送/接收)
    cs.close()            # 关闭客户套接字

    三、基于UDP的套接字

    ps:udp是无链接的,先启动哪一端都不会报错

    UDP服务端

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

    UDP客户端

    cs = socket()   # 创建客户套接字
    comm_loop:      # 通讯循环
       cs.sendto()/cs.recvfrom()   # 对话(发送/接收)
    cs.close()                      # 关闭客户套接字

    ps:但是由于UDP的安全性不足,一般用于聊天功能


  • 相关阅读:
    Distinct Subsequences
    Edit Distance
    值传递和引用传递
    同步代码块和同步方法的区别
    JVM、JRE、JDK的区别
    线程中的sleep()、join()、yield()方法有什么区别?
    线程的几种状态
    MVC模式设计的Web层框架初识
    Java实现线程的两种方式?Thread类实现了Runnable接口吗?
    springMVC运行流程
  • 原文地址:https://www.cnblogs.com/bailongcaptain/p/12739407.html
Copyright © 2020-2023  润新知