版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/boyun58/article/details/85157393
Python提供两种级别的网络服务访问。在较低级别,您可以访问底层操作系统中的基本套接字支持,这允许您为面向连接的协议和无连接协议实现客户端和服务器。
Python还具有库,可以提供对特定应用程序级网络协议的更高级别访问,例如FTP,HTTP等。
套接字是双向通信信道的端点。套接字可以在进程内,同一台机器上的进程之间或不同的进程之间进行通信。我们在python中使用socket模块来创建和使用套接字。
术语 | 描述 |
---|---|
Domain | 用作传输机制的协议族。这些值是常量,如AF_INET,PF_INET,PF_UNIX,PF_X25等。 |
type | 两个端点之间的通信类型,通常是面向连接的协议的SOCK_STREAM和无连接协议的SOCK_DGRAM。 |
protocol | 通常为零,这可以用于识别域内的协议的变体和类型。 |
hostname | 网络接口的标识符 ,一个字符串,可以是主机名,点分四地址或冒号(可能是点)表示法中的IPV6地址,字符串“”,指定INADDR_BROADCAST地址。零长度字符串,指定INADDR_ANY或一个整数,按主机字节顺序解释为二进制地址。 |
port | 每个服务器侦听在一个或多个端口上调用的客户端。端口可以是Fixnum端口号,包含端口号的字符串或服务名称。 |
socket Module
要创建套接字,必须使用套接字模块中提供的socket.socket()函数,该函数具有一般语法 -
s = socket.socket (socket_family, socket_type, protocol=0)
服务器套接字方法
-
s.bind()
此方法将地址(主机名,端口号对)绑定到套接字。 -
s.listen()
此方法设置并启动TCP侦听器。 -
s.accept()
这被动地接受TCP客户端连接,等待连接到达(阻塞)。
客户端套接字方法
- s.connect()
此方法主动启动TCP服务器连接。
通用套接字方法
-
s.recv()
此方法接收TCP消息扫描二维码关注公众号,回复: 4667180 查看本文章 -
s.send()
该方法传输TCP消息 -
s.recvfrom()
此方法接收UDP消息 -
s.sendto()
该方法发送UDP消息 -
S.CLOSE()
此方法关闭套接字 -
socket.gethostname()
返回主机名。
例如
server
import socket
s = socket.socket()
host = socket.gethostname()
print(host)
port = 12345
s.bind(("127.0.0.1", port))#("host", port)
s.listen(5)
while True:
c, addr = s.accept()
print('Got connection from', addr)
c.send(b'Thank you for connecting')
c.close()
client
import socket
s = socket.socket()
host = socket.gethostname()
port = 12345
s.connect(("127.0.0.1", port))#("host", port)
print(s.recv(1024))
s.close()