亿迅智能制造网
工业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 对象,然后您可以使用所需的功能来创建您的客户端或服务器程序。以下是所需的功能列表 -

服务器套接字方法

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 套接字模块中可用的函数来创建套接字对象。然后使用套接字对象调用其他函数来设置套接字服务器。

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

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

#!/usr/bin/python           # This is server.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.
s.bind((host, port))        # Bind to the port

s.listen(5)                 # Now wait for client connection.
while True:
   c, addr = s.accept()     # Establish connection with client.
   print 'Got connection from', addr
   c.send('Thank you for connecting')
   c.close()                # Close the connection

一个简单的客户端

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

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

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

#!/usr/bin/python           # This is client.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.

s.connect((host, port))
print s.recv(1024)
s.close()                     # Close the socket when done

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

# Following would start a server in background.
$ python server.py & 

# Once server is started run client as follows:
$ python client.py

这将产生以下结果 -

Got connection from ('127.0.0.1', 48437)
Thank you for connecting

Python 互联网模块

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

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

请检查上述所有库以使用 FTP、SMTP、POP 和 IMAP 协议。

进一步阅读

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


Python

  1. Python 数据类型
  2. Python 运算符
  3. Python pass 语句
  4. Python 函数参数
  5. Python字典
  6. Python 面向对象编程
  7. Python 迭代器
  8. Python 闭包
  9. Python 日期时间
  10. Python 睡眠()
  11. Python - 多线程编程
  12. Python - 使用 C 进行扩展编程