Python - 网络编程

Python - 网络编程 首页 / Python2入门教程 / Python - 网络编程

本章将使您对网络-Socket编程中最著名的概念有所了解。

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

Socket可以在许多不同的通道类型上实现:Unix域SocketTCPUDP等。 socket 库提供用于处理常见传输的特定类以及用于处理其余传输的通用接口。

Socket有自己的词汇表-

Sr.No.Term & 描述
1

Domain

用作传输机制的协议系列。这些值是常量,如AF_INET,PF_INET,PF_UNIX,PF_X25等。

2

type

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

3

protocol

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

4

hostname

网络接口的标识符

5

port

每台服务器侦听在一个或多个端口上调用的客户端。

Socket 模块

要创建Socket,必须使用 socket 模块中提供的 socket.socket()函数,该函数具有以下通用语法:

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

这是参数的描述-

  • socket_family   -  如前所述,它是AF_UNIX或AF_INET。

  • socket_type       - 这是SOCK_STREAM或SOCK_DGRAM。

  • protocol              - 通常忽略,默认为0。

一旦有了 socket 对象,就可以使用必需的函数来创建客户端或服务器程序。以下是所需函数的列表-

服务端方法

Sr.No.Method & 描述
1

s.bind()

此方法将地址(主机名,端口号对)绑定到Socket

2

s.listen()

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

3

s.accept()

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

客户端方法

Sr.No.Method & 描述
1

s.connect()

此方法主动启动TCP服务器连接。

通用Socket方法

Sr.No.Method & 描述
1

s.recv()

该方法接收TCP消息

2

s.send()

该方法传输TCP消息

3

s.recvfrom()

此方法接收UDP消息

4

s.sendto()

此方法传输UDP消息

5

s.close()

此方法关闭Socket

6

socket.gethostname()

返回主机名。

服务器代码

要编写Internet服务器,使用Socket模块中的 socket 函数来创建Socket对象。然后使用Socket对象调用其他函数来设置Socket服务器。

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

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

#!/usr/bin/python           # 这是server.py文件

import socket               # 导入socket模块

s=socket.socket()         # 创建socket对象
host=socket.gethostname() # 获取本地机器名称
port=12345                # 保留服务端口。
s.bind((host, port))        # 绑定到端口

s.listen(5)                 # 现在等待客户端连接。
while True:
   c, addr=s.accept()     # 与客户建立联系。
   print 'Got connection from', addr
   c.send('Thank you for connecting')
   c.close()                # 关闭连接

客户端代码

让无涯教程编写一个简单的客户端程序,该程序打开到给定端口12345和给定主机的连接。使用Python socket 模块函数创建Socket客户端非常简单。

socket.connect(hosname,port)打开与 port 上 hostname 的TCP连接。打开Socket后,您可以像读取任何IO对象一样从中读取Socket。完成后,记得关闭它,就像关闭文件一样。

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

#!/usr/bin/python           # 这是client.py文件

import socket               # 导入socket模块

s=socket.socket()         # 创建socket对象
host=socket.gethostname() # 获取本地机器名称
port=12345                # 保留开放的端口号。

s.connect((host, port))
print s.recv(1024)
s.close()                     # 完成后关闭插座

现在,在后台运行此server.py,然后在client.py上方运行以查看输出。

# 以下将在后台启动服务器。
$python server.py & 

# 一旦服务器启动运行客户端,如下所示:
$python client.py

这将产生以下输出-

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

Python 网络模块

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

协议常用函数端口号 Python模块
HTTP网页 80 httplib,urllib,xmlrpclib
NNTP Usenet新闻 119 nntplib
FTP文件传输 20 ftplib,urllib
SMTP发送电子邮件 25 smtplib
POP3获取电子邮件 110 poplib
IMAP4获取电子邮件 143 imaplib
Telnet命令行 23 telnetlib
Gopher文档传输 70 gopherlib,urllib

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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

深入浅出gRPC -〔李林锋〕

Java业务开发常见错误100例 -〔朱晔〕

视觉笔记入门课 -〔高伟〕

软件设计之美 -〔郑晔〕

乔新亮的CTO成长复盘 -〔乔新亮〕

网络排查案例课 -〔杨胜辉〕

说透元宇宙 -〔方军〕

深入拆解消息队列47讲 -〔许文强〕

结构思考力 · 透过结构看思考 -〔李忠秋〕

好记忆不如烂笔头。留下您的足迹吧 :)