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的安全性不足,一般用于聊天功能


原文地址:https://www.cnblogs.com/bailongcaptain/p/12739407.html