python网络编程

一、概述

  Python 提供了两个级别访问的网络服务。

  • 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。
  • 高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发

二、参数

  • family: 套接字家族可以使AF_UNIX或者AF_INET
  • type: 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAMSOCK_DGRAM
  • protocol: 一般不填默认为0.

三、服务端

  我们使用 socket 模块的 socket 函数来创建一个 socket 对象。socket 对象可以通过调用其他函数来设置一个 socket 服务。

现在我们可以通过调用 bind(hostname, port) 函数来指定服务的 port(端口)

接着,我们调用 socket 对象的 accept 方法。该方法等待客户端的连接,并返回 connection 对象,表示已连接到客户端。

完整代码如下:

 1 # coding=utf-8
 2 # 文件名:server.py
 3 
 4 import socket               # 导入 socket 模块
 5 
 6 s = socket.socket()         # 创建 socket 对象
 7 host = socket.gethostname() # 获取本地主机名
 8 port = 12345                # 设置端口
 9 s.bind((host, port))        # 绑定端口
10 
11 s.listen(5)                 # 等待客户端连接
12 while True:
13     c, addr = s.accept()     # 建立客户端连接。
14     print 'address:', addr
15     c.send('welcome to!')
16     c.close()                # 关闭连接

四、客户端

  接下来我们写一个简单的客户端实例连接到以上创建的服务。端口号为 12345。

socket.connect(hosname, port ) 方法打开一个 TCP 连接到主机为 hostname 端口为 port 的服务商。连接后我们就可以从服务端后期数据,记住,操作完成后需要关闭连接。

完整代码如下:

 1 # coding=utf-8
 2 # 文件名:client.py
 3 
 4 import socket               # 导入 socket 模块
 5 
 6 s = socket.socket()         # 创建 socket 对象
 7 host = socket.gethostname() # 获取本地主机名
 8 port = 12345                # 设置端口好
 9 
10 s.connect((host, port))
11 print host
12 print socket.gethostbyaddr(host)
13 print socket.SocketType
14 print s.recv(1024)
15 s.close()

五、Python Internet 模块

  以下列出了 Python 网络编程的一些重要模块:

协议功能用处端口号Python 模块
HTTP 网页访问 80 httplib, urllib, xmlrpclib
NNTP 阅读和张贴新闻文章,俗称为"帖子" 119 nntplib
FTP 文件传输 20 ftplib, urllib
SMTP 发送邮件 25 smtplib
POP3 接收邮件 110 poplib
IMAP4 获取邮件 143 imaplib
Telnet 命令行 23 telnetlib
Gopher 信息查找 70

gopherlib, urllib

   

 

 

 

 

 

 

 

   

posted @ 2016-12-11 19:26  朝十晚八  阅读(395)  评论(0编辑  收藏  举报

返回顶部