查看: 830|回复: 0
打印 上一主题 下一主题

MicroPython 标准库 usocket

[复制链接] qrcode

29

主题

34

帖子

102

积分

注册会员

Rank: 2

积分
102
楼主
跳转到指定楼层
发表于 2016-7-13 11:06 AM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 shaoziyang 于 2016-7-13 11:10 编辑

usocket – socket module

BSD 套接字接口

查看CPython 对应的模块进行比较

Socket 地址格式

下面函数使用 ipv4 格式(地址:端口)网络地址, ipv4 地址是由点和数字组成的字符串,如 "8.8.8.8",端口是 1-65535 的数字。注意不能使用域名做为 ipv4 地址,域名需要先用 socket.getaddrinfo() 进行解析。


函数

  • socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
    创建新的套接字,使用指定的地址、类型和协议号。

  • socket.getaddrinfo(host, port)
    传递 主机/端口 到一个5个数据的元组。元组列表的结构如下:

    (family, type, proto, canonname, sockaddr)

    下面显示了怎样连接到一个网址:
    s = socket.socket()
    s.connect(socket.getaddrinfo('www.micropython.org', 80)[0][-1])


常数

  • socket.AF_INET
    family 类型

  • socket.SOCK_STREAM
  • socket.SOCK_DGRAM
    socket 类型

  • socket.IPPROTO_UDP
  • socket.IPPROTO_TCP


套接字类型

方法

  • socket.close()
    关闭套接字。一旦关闭后,套接字所有的功能都将失效。远端将接收不到任何数据 (清理队列数据后)。
    在回收垃圾时套接字会自动关闭,但还是推荐在必要时用 close() 去关闭,或, or to use a with statement around them.

  • socket.bind(address)
    将套接字绑定到地址,套接字不能是已经绑定的。

  • socket.listen([backlog])
    允许服务器接收连接。如果指定了 backlog,它不能小于0 (如果小于0将自动设置为0);超出后系统将拒绝新的连接。如果没有指定,将使用默认值。

  • socket.accept()
    接收连接。套接字需要指定地址并监听连接。返回值是 (conn, address),其中conn是用来接收和发送数据的套接字,address是绑定到另一端的套接字。

  • socket.connect(address)
    连接到指定地址的远端套接字。

  • socket.send(bytes)
    发送数据。套接字需要已连接到远程。

  • socket.sendall(bytes)
    发送数据。套接字已连接到远程。

  • socket.recv(bufsize)
    接收数据,返回值是数据字节对象。bufsize是接收数据的最大数量。

  • socket.sendto(bytes, address)
    发送数据。套接字没有连接到远程,目标套接字由地址参数指定。

  • socket.recvfrom(bufsize)
    接收数据。返回值是 (bytes, address),其中 bytes 是字节对象,address 是发送数据的套接字。

  • socket.setsockopt(level, optname, value)
    设置套接字参数。需要的符号常数定义在套接字模块 (SO_* 等)。value 可以是整数或字节对象。

  • socket.settimeout(value)
    设置阻塞套接字超时时间。value 参数可以是代表秒的正浮点数或 None。如果设定大于 0 的参数,在后面套接字操作超出指定时间后将引起 timeout 异常。如果参数是 0,套接字将使用非阻塞模式。如果是 None,套接字使用阻塞模式。

  • socket.setblocking(flag)
    设置阻塞或非阻塞模式: 如果 flag 是 false,设置非阻塞模式。

    这是调用 settimeout() 的一种简便方法:

    sock.setblocking(True) 等于 sock.settimeout(None)
    sock.setblocking(False) 等于 sock.settimeout(0.0)

  • socket.makefile(mode='rb')
    返回关联到套接字的文件对象,返回值类型与指定的参数有关。仅支持二进制模式 (‘rb’ 和 ‘wb’),CPython 的 encoding、errors 和  newline 不被支持。
    套接字必须是阻塞模式,它可以指定超时,但是当发生超时异常后文件内部缓存状态可能不一致。

    和 CPython 的不同
    关闭文件也会同时关闭套接字。

  • socket.read(size)
    读取指定字节数据,返回参数是字节对象。如果没有指定 size,结果和 socket.readall() 相同。

  • socket.readall()
    读取全部数据,直到 EOF。函数直到套接字关闭才返回。

  • socket.readinto(buf[, nbytes])
    读取到缓冲区。如果指定了 nbytes,那么最多只读取 nbytes 字节,否则最多读取 len(buf) 字节。
    返回值是读取的字节数。

  • socket.readline()
    读取一行,以换行符结束。
    返回读取的数据行。

  • socket.write(buf)
    写入缓冲区数据。
    返回值是写入的数据数量。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表