• 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

       

     

       

  • 相关阅读:
    WinRAR的命令行模式用法介绍
    Linux find命令的用法实践
    Linux服务器磁盘扩展和oracle表空间文件迁移操作记录
    博客园开篇,自己开发的双色球小助手
    解决MySQL安装3306端口占用问题
    html书写行内元素时-tab和换行会在行内元素间引入间距
    FileReader生成图片dataurl的分析
    mysql启动流程
    npm--debug模块
    js之Symbol类型
  • 原文地址:https://www.cnblogs.com/swarmbees/p/6160288.html
Copyright © 2020-2023  润新知