Python 套接字——SOCK_STREAMSOCK_DGRAM

原文:https://www.studytonight.com/network-programming-in-python/socket-methods

插座有两种类型:SOCK_STREAMSOCK_DGRAM。下面我们对两种类型的插座进行比较。

| SOCK_STREAM | SOCK_DGRAM | | 对于 TCP 协议 | 对于 UDP 协议 | | 可靠的交付 | 不可靠的交货 | | 保证数据包的正确排序 | 没有订单保证 | | 面向连接 | 没有连接的概念 | | 双向的 | 不是双向的 |


Python 中的套接字模块

要创建套接字,我们必须使用 Python 套接字模块中可用的socket.socket()函数,其一般语法如下:

S = socket.socket(socket_family, socket_type, protocol=0)
  • socket_family :这不是AF_UNIX就是AF_INET。在本教程中,我们只讨论 INET 套接字,因为它们至少占正在使用的套接字的 99%。
  • 插座类型:这不是SOCK_STREAM就是SOCK_DGRAM
  • 协议:这通常被忽略,默认为0

现在,如果你还记得的话,我们在上一节教程中也讨论过客户机-服务器套接字程序。现在,让我们深入了解该程序,并尝试理解所使用的术语和方法。


客户端套接字方法

以下是一些客户端套接字方法:

连接( )

连接到某个地址的远程套接字。一个地址格式(主机、端口)对用于AF_INET地址族。


服务器套接字方法

以下是一些服务器套接字方法:

绑定( )

此方法将套接字绑定到一个地址。地址的格式取决于上面提到的套接字家族(AF_INET)。

听(积压)

此方法侦听与套接字的连接。积压是在拒绝连接之前必须侦听的排队连接的最大数量。

接受( )

此方法用于接受连接。套接字必须绑定到一个地址并侦听连接。返回值是一个pair(conn, address),其中 conn 是一个新的套接字对象,可用于在该连接上发送和接收数据,地址是绑定到连接另一端套接字的地址。

有关方法的详细视图,请参考文件:https://docs.python.org/2/library/socket.htmlT3


少数通用套接字方法

对于下面定义的套接字对象,

s = socket.socket(socket_family, socket_type, protocol=0)

| 套接字方法 | UDP 套接字方法 | | s.recv() →接收 TCP 消息 | s.recvfrom() →接收 UDP 消息 | | s.send() →传输 TCP 消息 | s.sendto() →传输 UDP 消息 |


一些基本的套接字方法

  • close()此方法用于关闭插座连接。
  • gethostname()这个方法返回一个包含 python 解释器当前正在执行的机器的主机名的字符串。例如:localhost。
  • gethostbyname()如果想知道当前机器的 IP 地址,可以使用gethostbyname(gethostname())