Python 套接字——SOCK_STREAM
和SOCK_DGRAM
原文:https://www.studytonight.com/network-programming-in-python/socket-methods
插座有两种类型:SOCK_STREAM
和SOCK_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())
。