亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python
Python - 网络编程

上一页下一页

Python 提供了两个级别的网络服务访问权限。在底层,您可以访问底层操作系统中的基本套接字支持,这允许您为面向连接和无连接协议实现客户端和服务器。

Python 还具有一些库,可以提供对特定应用程序级网络协议(例如 FTP、HTTP 等)的更高级别访问。

本章让您了解网络中最著名的概念 - 套接字编程。

什么是套接字?

套接字是双向通信通道的端点。套接字可以在一个进程内、同一台机器上的进程之间或不同大陆的进程之间进行通信。

套接字可以通过多种不同的通道类型实现:Unix 域套接字、TCP、UDP 等。 套接字 库提供了用于处理公共传输的特定类以及用于处理其余部分的通用接口。

套接字有自己的词汇 -

Sr.No. 术语和描述
1

用作传输机制的协议族。这些值是 AF_INET、PF_INET、PF_UNIX、PF_X25 等常量。

2

类型

两个端点之间的通信类型,通常是面向连接协议的 SOCK_STREAM 和无连接协议的 SOCK_DGRAM。

3

协议

通常为零,这可用于标识域和类型内的协议变体。

4

主机名

网络接口的标识符 -

  • 一个字符串,可以是主机名、点分四组地址或冒号(也可能是点)表示法的 IPV6 地址

  • 一个字符串“”,它指定了一个 INADDR_BROADCAST 地址。

  • 零长度字符串,指定 INADDR_ANY,或

  • 一个整数,解释为主机字节顺序的二进制地址。

5

端口

每个服务器侦听调用一个或多个端口的客户端。端口可以​​是 Fixnum 端口号、包含端口号的字符串或服务名称。

套接字 模块

要创建套接字,您必须使用 socket.socket() socket 中可用的函数 模块,具有通用语法 -

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

这里是参数的描述 -

  • socket_family − 如前所述,这是 AF_UNIX 或 AF_INET。

  • socket_type - 这是 SOCK_STREAM 或 SOCK_DGRAM。

  • 协议 − 通常省略,默认为 0。

一旦你有 socket 对象,然后您可以使用所需的函数来创建您的客户端或服务器程序。以下是所需的功能列表 -

服务器套接字方法

Sr.No. 方法和说明
1

s.bind()

该方法将地址(主机名,端口号对)绑定到套接字。

2

s.listen()

此方法设置并启动 TCP 侦听器。

3

s.accept()

这被动地接受 TCP 客户端连接,等待连接到达(阻塞)。

客户端套接字方法

Sr.No. 方法和说明
1

s.connect()

该方法主动发起TCP服务器连接。

通用套接字方法

Sr.No. 方法和说明
1

s.recv()

此方法接收 TCP 消息

2

s.send()

该方法传输TCP报文

3

s.recvfrom()

该方法接收UDP消息

4

s.sendto()

该方法传输UDP报文

5

s.close()

此方法关闭套接字

6

socket.gethostname()

返回主机名。

一个简单的服务器

要编写 Internet 服务器,我们使用 socket socket 模块中可用的函数来创建一个 socket 对象。然后使用套接字对象调用其他函数来设置套接字服务器。

现在调用 bind(hostname, port) 指定端口的函数 为您在给定主机上的服务。

接下来,调用 accept 返回对象的方法。此方法等待客户端连接到您指定的端口,然后返回一个连接 表示与该客户端的连接的对象。

#!/usr/bin/python # 这是 server.py fileimport socket # 导入 socket modules =socket.socket() # 创建一个 socket objecthost =socket.gethostname() # 获取本地机器nameport =12345 # 为你的服务预留一个端口.s.bind((host, port)) # 绑定到ports.listen(5) # 现在等待客户端连接。while True:c, addr =s.accept() # 与客户端建立连接。 print 'Got connection from', addr c.send('Thank you for connection') c.close() # 关闭连接

一个简单的客户端

让我们编写一个非常简单的客户端程序,它打开一个到给定端口 12345 和给定主机的连接。使用 Python 的 socket 创建套接字客户端非常简单 模块功能。

socket.connect(hosname, port) 打开一个到 hostname 的 TCP 连接 在端口 .一旦你打开了一个套接字,你就可以像任何 IO 对象一样从中读取数据。完成后,记得关闭它,就像关闭文件一样。

以下代码是一个非常简单的客户端,它连接到给定的主机和端口,从套接字读取任何可用数据,然后退出 -

#!/usr/bin/python # 这是client.py fileimport socket # 导入socket modules =socket.socket() # 创建socket objecthost =socket.gethostname() # 获取本地机器nameport =12345 # 为你的服务预留一个端口.s.connect((host, port))print s.recv(1024)s.close() # 完成后关闭socket

现在在后台运行这个server.py,然后在client.py上面运行看看结果。

# 以下将在后台启动服务器。$ python server.py &# 一旦服务器启动,运行客户端如下:$ python client.py

这将产生以下结果 -

从 ('127.0.0.1', 48437) 获得连接感谢您的连接

Python 互联网模块

Python Network/Internet 编程中一些重要模块的列表。

协议 常用功能 端口号 Python 模块
HTTP 网页 80 httplib、urllib、xmlrpclib
NNTP Usenet 新闻 119 nntplib
FTP 文件传输 20 ftplib、urllib
SMTP 发送电子邮件 25 smtplib
POP3 正在获取电子邮件 110 poplib
IMAP4 正在获取电子邮件 143 imaplib
远程登录 命令行 23 telnetlib
地鼠 文件传输 70 gopherlib、urllib

请检查上面提到的所有库以使用 FTP、SMTP、POP 和 IMAP 协议。

进一步阅读

这是套接字编程的快速入门。这是一个广阔的主题。建议通过以下链接查找更多详细信息 -

  • Unix套接字编程。

  • Python 套接字库和模块。


Python

  1. Python - 决策
  2. Python 条件语句:IF...Else、ELIF 和 Switch Case
  3. 如何在 Windows 上安装 Python [Pycharm IDE]
  4. Python 时间模块
  5. 使用 Python 登录 Facebook:FB 登录示例
  6. Python 装饰器