全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

python 网络编程详解及简单实例

python 网络编程详解

网络编程的专利权应该属于Unix,各个平台(如windows、Linux等)、各门语言(C、C++、Python、Java等)所实现的符合自身特性的语法都大同小异。在我看来,懂得了Unix的socket网络编程,其他的形式的网络编程方法也就知道了。这句话说得还不太严谨。准确的应该说成懂得了socket编程的原理,网络编程也就知道了,不同之处就在于每个平台,每个语言都有自己专享的语法,我们直接灵活套用就行了。

下面是用python实现的最基本的网络编程的例子,即依托于客户端-服务器的架构,实现客户端与服务器之间的单向“数据流通”。我们分别用两个方法来实现,一个方法是最原始的socket编程,另一个方法是利用python的面向对象对第一种方法进行封装实现,目的是减少实现透明性,便于快速开发。

要求:客户端输入数据,发送到服务端,服务器端生成(时间戳+数据)的封装数据回应客户端。由于socket编程包括两种:面向连接的和无连接的,这两种分别对应TCP数据流和UDP数据报文。所以,我们两种方法都进行实现。

一、Python socket编程

面向连接的TCP socket编程:

# -*- coding: utf-8 -*-
 3 from socket import *
from time import ctime 

# Address and Port
HOST = ''
PORT = 21567
ADDR = (HOST, PORT)

# BuffSize
BUFSIZ = 1024

# build socket
tcpSerSock = socket(AF_INET, SOCK_STREAM)
# bind socket
tcpSerSock.bind(ADDR)
# listen 5 client 
tcpSerSock.listen(5)

try:
  while True:
    print 'waiting for connection...'
    # build client socket
    tcpCliSock, addr = tcpSerSock.accept()
    print '...connect from:', addr

    # accept data and process
    while True:
      data = tcpCliSock.recv(BUFSIZ)
      if not data:
        break
      tcpCliSock.send('[%s] %s' % (ctime(), data))

      # close client socket 
      tcpCliSock.close()
except EOFError, KeyboardInterrupt:
  tcpSerSock.close()
# -*- coding:utf-8 -*-

from socket import *

# Address and Port 
HOST = '127.0.0.1'
PORT = 21567
ADDR = (HOST, PORT)

# BufferSize
BUFSIZ = 1024

#build socket 
tcpCliSocket = socket(AF_INET, SOCK_STREAM)
tcpCliSocket.connect(ADDR)

while True:
  data = raw_input('> ')
  if not data:
    break
  # send data
  tcpCliSocket.send(data)
  # recv data
  data = tcpCliSocket.recv(BUFSIZ)
  if not data:
    break
  # show data
  print data
tcpCliSocket.close()

无连接的UDP socket编程

# -*- coding: utf-8 -*-

from socket import *
from time import ctime 

# Address and Port 
HOST = ''
PORT = 8000
ADDR = (HOST, PORT)

# BufferSize
BUFFSIZE = 1024
# build socket
udpSerSock = socket(AF_INET, SOCK_DGRAM)
# bind socket
udpSerSock.bind(ADDR)

try:
  while True:
    print 'waiting the message...'
    data, addr = udpSerSock.recvfrom(BUFFSIZE)
    print 'received the message: '+data+' from: ', addr
    udpSerSock.sendto('[%s] %s' % (ctime(), data), addr)
except EOFError, KeyboardInterrupt:
  udpSerSock.close()
# -*- coding: utf-8 -*-

from socket import *

# Address and Port 
HOST = 'localhost'
PORT = 8000
ADDR = (HOST, PORT)

# BufferSize
BUFSIZ = 1024

# build socket 
udpCliSock = socket(AF_INET, SOCK_DGRAM)

while True:
  data = raw_input('> ')
  udpCliSock.sendto(data, ADDR)
  data = udpCliSock.recvfrom(BUFSIZ)
  if not data:
    break
  print data 
udpCliSock.close()

二、基于封装类SocketServer的网络编程

# -*- coding: utf-8 -*-

from SocketServer import TCPServer as TCP, StreamRequestHandler as SRH 
from time import ctime 

# Address and Port
HOST = ''
PORT = 21567
ADDR = (HOST, PORT)

# BuffSize
BUFSIZ = 1024

# build RequestHandler
class MyRequestHandler(SRH):
  def handle(self):
    print '...connected from: ', self.client_address
    self.wfile.write('[%s] %s' % (ctime(), self.rfile.readline()))

# build TCPServer
TCPServ = TCP(ADDR, MyRequestHandler)
print 'waiting for connection...'
# loop to process
TCPServ.serve_forever()
# -*- coding:utf-8 -*-

from socket import *

# Address and Port 
HOST = '127.0.0.1'
PORT = 21567
ADDR = (HOST, PORT)

# BufferSize
BUFSIZ = 1024

while True:
  # note: SocketServer 的请求处理器的默认行为是接受连接,
  # 得到请求,然后就关闭连接,所以需要多次连接
  tcpCliSock = socket(AF_INET, SOCK_STREAM)
  tcpCliSock.connect(ADDR)

  # process data
  data = raw_input('> ')
  if not data:
    break
  tcpCliSock.send('%s\r\n' % data)

  data = tcpCliSock.recv(BUFSIZ)
  if not data:
    break
  print data.strip()
  tcpCliSock.close()

感谢阅读,希望能帮助大家,谢谢大家对本站的支持!


# python  # 网络编程  # 网络编程详解  # python网络编程之TCP通信实例和socketserver框架使用例子  # python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)  # Python 网络编程起步(Socket发送消息)  # python socket网络编程步骤详解(socket套接字使用)  # Python 网络编程说明  # 用Python进行TCP网络编程的教程  # python网络编程调用recv函数完整接收数据的三种方法  # python网络编程实例简析  # Python网络编程中urllib2模块的用法总结  # python网络编程:socketserver的基本使用方法实例分析  # 客户端  # 也就  # 两种  # 知道了  # 不太  # 其他的  # 这句话  # 希望能  # 说得  # 大同小异  # 种方法  # 发送到  # 谢谢大家  # 这两种  # 来实现  # 就在于  # 在我看来  # 说成  # 服务端 


相关文章: 深圳防火门网站制作公司,深圳中天明防火门怎么编码?  如何用免费手机建站系统零基础打造专业网站?  如何确保FTP站点访问权限与数据传输安全?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  学校为何禁止电信移动建设网站?  如何登录建站主机?访问步骤全解析  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  如何快速搭建自助建站会员专属系统?  如何快速搭建高效可靠的建站解决方案?  Swift中switch语句区间和元组模式匹配  建站之星后台管理:高效配置与模板优化提升用户体验  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  制作网站怎么制作,*游戏网站怎么搭建?  如何快速查询网站的真实建站时间?  建站之星在线客服如何快速接入解答?  安徽网站建设与外贸建站服务专业定制方案  南京网站制作费用,南京远驱官方网站?  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  建站VPS选购需注意哪些关键参数?  建站之星安装需要哪些步骤及注意事项?  实例解析Array和String方法  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  如何彻底删除建站之星生成的Banner?  c# 在ASP.NET Core中管理和取消后台任务  建站之星如何一键生成手机站?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  建站主机选购指南:核心配置优化与品牌推荐方案  为什么Go需要go mod文件_Go go mod文件作用说明  如何选择网络建站服务器?高效建站必看指南  香港服务器建站指南:免备案优势与SEO优化技巧全解析  网站制作的步骤包括,正确网址格式怎么写?  建站之星各版本价格是多少?  做企业网站制作流程,企业网站制作基本流程有哪些?  建站之星安装后如何配置SEO及设计样式?  建站VPS配置与SEO优化指南:关键词排名提升策略  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  大连网站制作公司哪家好一点,大连买房网站哪个好?  家庭服务器如何搭建个人网站?  建站主机如何选?性能与价格怎样平衡?  建站之星24小时客服电话如何获取?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  c++怎么用jemalloc c++替换默认内存分配器【性能】  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  javascript中对象的定义、使用以及对象和原型链操作小结  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。