zoukankan      html  css  js  c++  java
  • 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

       

     

       

  • 相关阅读:
    管理软件数据库备份策略
    融云群组同步策略
    Nginx中配置undertow进行两个项目的动静分离配置
    记录mysql正在执行的SQL语句
    RabbitMQ启动出现的问题与解决办法
    延迟任务的实现总结
    查找所有sphinx引擎表并生成创建表的语句
    go 学习笔记(4) --变量与常量
    go 学习笔记(4) import
    go 学习笔记(4) package
  • 原文地址:https://www.cnblogs.com/swarmbees/p/6160288.html
Copyright © 2011-2022 走看看