zoukankan      html  css  js  c++  java
  • socket

    1.套接字分类:

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

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

    2.套接字的流程:

    socket()模块函数用法:

      客户端:

     1 import socket
     2 iphone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
     3 iphone.connect(('192.168.16.47',8080))
     4 while True:
     5     choice=input('>>:').strip()
     6     if not choice:continue
     7     iphone.send(choice.encode('utf-8'))
     8     data=iphone.recv(1024)
     9     print(data.decode("utf-8"))
    10 iphone.close()

      服务端:

     1 import socket
     2 iphone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
     3 iphone.bind(('192.168.16.47',8080))
     4 iphone.listen(5)
     5 print('Loading......')
     6 while True:                         #循环等待
     7     conn,addr=iphone.accept()
     8     print('此次来电的线路是:',conn)
     9     print('此次来电的号码是:',addr)
    10     while True:                     #循环通讯
    11         try:
    12             data=conn.recv(1024)
    13             if not data:break       #应对linux系统
    14             print('客服端发来的贺电:',data.decode("utf-8"))
    15             conn.send(data.upper())
    16         except ConnectionResetError:
    17             break
    18     #关闭
    19     conn.close()
    20 iphone.close()

    函数:

     1 import socket as s
     2 #服务端套接字函数
     3 s.bind(('10.10.10.10',8080))    #绑定(主机,端口)到套接字
     4 s.listen()                       #开始TCP监听
     5 s.accept()                       #被动接受TCP客户的连接,(阻塞式)等待连接的到来
     6 #客户端套接字函数
     7 s.connect()                      #主动初始化TCP服务器连接
     8 s.connect_ex()                   #connect()函数的扩展版本,出错时间时返回错码,而不是抛出异常
     9 #公共用途的套接字函数
    10 s.recv()                         #接受TCP数据
    11 s.send()                         #发送TCP数据(send在待发送数据量大于己端缓存区剩余空间时,数据丢失,不会发完)
    12 s.sendall()                      #发送完成的TCP数据(本质就是循环调用send,sendall在待发送数据量大于己端缓存区剩余空间时,数据不丢失,循环调用sned直到发完)
    13 s.recvfrom()                     #接收UDP数据
    14 s.sendto()                       #发送UDP数据
    15 s.getpeername()                  #连接到当前套接字的远端地址
    16 s.getsockname()                  #当前套接字的地址
    17 s.getsockopt()                   #返回指定套接字的参数
    18 s.setsockopt()                   #设置指定套接字的参数
    19 s.close()                        #关闭套接字
    20 #面向锁的套接字方法
    21 s.setblocking()                  #设置套接字的阻塞与非阻塞模式
    22 s.settimeout()                   #设置阻塞套接字操作的超时时间
    23 s.gettimeout()                   #得到阻塞套接字操作的超时时间
    24 #面向文件的套接字的函数
    25 s.fileno()                       #套接字的文件描述符
    26 s.makefile()                     #创建一个与该套接字相关的文件
  • 相关阅读:
    ucore lab4 内核线程管理 学习笔记
    谈谈博客三迁的经历
    ucore lab3 虚拟内存管理 学习笔记
    ucore lab2 物理内存管理 学习笔记
    ucore lab1 操作系统启动过程 学习笔记
    【VMware】在移动硬盘或U盘中安装便携linux系统
    借助ADB冻结与卸载Android系统应用(免ROOT)
    Windows下查找各类游戏存档路径
    QMetaObject::connectSlotsByName: No matching signal for XXX 原理探究
    将VScode添加至右键菜单
  • 原文地址:https://www.cnblogs.com/gz369521/p/6802755.html
Copyright © 2011-2022 走看看