python学习记录--网络编程

1、套接字介绍

一台机器上的不同进程之间进行通信可以利用队列,管道等,但是不同机器之间的进程进行通信用队列是不行的,解决这个问题就是网络套接字。

套接字是计算机网络数据结构,它体现了通信端点的概念。在任何类型的通信开始之前,网络应用程序必须创建套接字。可以将它比作电话插孔,没有它无法进行通信。

套接字最初是为同一主机上的应用程序所创建,使得主机上一个程序(进程)可以和主机上另外一个程序互相通信,也就是所谓的进程间通信。有两种类型的套接字:基于文件和基于网络的。

  • 基于文件的套接字,家族名:AF_UNIX(又名:AF_LOCAL)
  • 基于网络的套接字,家族名:AF_INET

在python2.5和后续的版本中,支持的套接字有:AF_UNIX,AF_INET,AF_TICP,AF_NETLINK。python中的网络编程主要是AF_INET。

1.1、套接字地址:主机+端口
如果一个套接字像一个电话插孔——允许通信的一些基础设施,那么主机名和端口号就像区号和电话号码的组合。
有效的端口号范围为 0~65535(小于 1024 的端口号预留给了系统)。

1.2、面向连接和无连接的套接字
python中创建面向连接(TCP协议)的套接字必须使用SOCK_STREAM作为套接字类型,而创建无连接(UDP协议)的套接字必须使用SOCK_DGRAM作为套接字类型。

2、python中的网络编程

在python中主要是用socket模块来实现基于套接字的网络通信。
2.1、socket()模块函数
使用socket.socket()函数创建套接字,一般语法格式如下:

import socket
socket(socket_family,socket_type,protocol=0)#其中,socket_family就是AF_UNIX或者AF_INET等,
#socker_type是SOCK_DGRAM或者SOCK_STREAM,
#protocol通常省略,默认为0

创建一个TCP/IP套接字,可以用下面方式调用socket.socket()。

tcpSocket = socket.socket(socket.AF_INET,socket.SCOK_STREAM)

创建一个UDP/IP套接字,可以用下面方式调用socket.socket()。

udpSock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

如果用"from socket import *"导入模块的话,创建套接字就可以节省很多代码,例如创建一个UDP/IP套接字。

from socket import *
udpSock = socket(AF_INET,SOCK_DGRAM)

有了套接字对象,就可以使用套接字对象方法进行交互。

2.2、套接字方法
常见的套接字方法:

方法名 描述
s.send() 发送TCP消息
s.sendto() 发送UDP消息
s.recv() 接收TCP消息
s.recvfrom() 接收UDP消息
s.close() 关闭套接字
s.bind() 将地址(主机名+端口号对)绑定到套接字上

3、UDP服务器

3.1 UDP协议
UDP协议--是一个简单的面向数据报的运输层协议,它不提供可靠性,它把应用程序传给IP层的数据报发出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

UDP是一种面向无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。

3.2 UDP特点
UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。 UDP传输数据时有大小限制,每个被传输的数据报必须限定在64KB之内。 UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方。

【适用情况】

UDP是面向消息的协议,通信时不需要建立连接,数据的传输自然是不可靠的,UDP一般用于多点通信和实时的数据业务,比如

  • 语音广播
  • 视频
  • QQ
  • TFTP(简单文件传送)
  • SNMP(简单网络管理协议)
  • RIP(路由信息协议,如报告股票市场,航空信息)
  • DNS(域名解释)

注重速度流畅
UDP操作简单,而且仅需要较少的监护,因此通常用于局域网高可靠性的分散系统中client/server应用程序。例如视频会议系统,并不要求音频视频数据绝对的正确,只要保证连贯性就可以了,这种情况下显然使用UDP会更合理一些。

3.3 创建UDP服务器
创建UDP服务器的大体框架,由于UDP是面向无连接的,所以除了等待传入的连接之外,几乎不需要做其他工作。

from socket import *
#创建服务器套接字
udpSocket = socket.socket(AF_INET,SOCK.DGRAM) #绑定服务器套接字
udpSocket.bind(port) #服务器无限循环,等待连接
while True: #接受客户端传入/发送数据cs = udpSocket.recvfrom()/udpSocket.sendto(xxx)#关闭套接字udpSocket.close()

python网络编程相关推荐

  1. python网络编程--socket简单实现

    python网络编程                                                                                           ...

  2. python网络编程-异常处理-异常捕获-抛出异常-断言-自定义异常-UDP通信-socketserver模块应用-03

    python网络编程-异常处理-异常捕获-抛出异常-断言-自定义异常-UDP通信-socketserver模块应用-03 参考文章: (1)python网络编程-异常处理-异常捕获-抛出异常-断言-自 ...

  3. python编程入门指南怎么样-学习python网络编程怎么入门

    第一部分底层网络学习 Python提供了访问底层操作系统Socket接口的全部方法,需要的时候这些接口可以提供灵活而强有力的功能. (1)基本客户端操作 在<python 网络编程基础>一 ...

  4. python编程实例下载-python网络编程之文件下载实例分析

    本文实例讲述了python网络编程之文件下载实现方法.分享给大家供大家参考.具体如下: 真是越看越喜欢python啊,想要了解它提供的http和ftp下载功能,原来是如此的简单. 1.相应模块 ftp ...

  5. python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)...

    python网络编程基础(线程与进程.并行与并发.同步与异步.阻塞与非阻塞.CPU密集型与IO密集型) 目录 线程与进程并行与并发同步与异步阻塞与非阻塞CPU密集型与IO密集型 线程与进程 进程 前言 ...

  6. python网络编程案例_Python 网络编程_python网络编程基础_python高级编程

    Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...

  7. python 网络编程 问题记录

    191223 python 网络编程 套接字的初使用 在本机配置服务端和客户端后,运行没问题:将服务端代码弄到另一台电脑上后启动,用原来的电脑去连接它,就连不上了,不知啥原因,是ip自动获取和指定ip ...

  8. python网络编程(苦肝一夜,近万字)

    文章目录 一.TCP/IP简介 二.网络设计模块 1.Socket简介 2.python中的socket模块,使用该模块建立服务器需要6个步骤. 1.创建socket对象. 2.将socket绑定(指 ...

  9. python网络编程证书_《Python网络编程基础》笔记

    python网络编程基础 ================== Author: lujun9972 Date: 2013-03-08 22:29:20 CST Table of Contents == ...

  10. Python 网络编程(Socket)

    Python 网络编程(Socket) 一.Socket 套接字 1.Socket 编程 socket本质是编程接口(API),对TCP/IP的封装,提供可供程序员做网络开发所用的接口.Socket ...

最新文章

  1. C++职工信息管理系统
  2. C++morse code 摩尔斯电码算法(附完整源码)
  3. SAP APF tile点击之后,都发生了哪些事情
  4. React 深度学习:ReactFiber
  5. Windows7下硬盘安装RHEL 6.1
  6. CoreException: Could not get the value for parameter compilerId for plugin execution default-compile
  7. 更新macOS Big Sur系统后,Parallels Desktop打不开怎么办?教你解决方法!
  8. 软件需求与分析——大二下需会知识点
  9. SAP FICO面试题
  10. Go面向对象---音乐库案例
  11. 基于BTN7971芯片得H桥驱动
  12. numpy 判断是否实数
  13. 绕流运动与附面层基本概念
  14. 458、Java框架112 -【MyBatis - 一级缓存、二级缓存】 2020.12.28
  15. 通过网页免费下载音乐(F12)
  16. HTML5、CSS3进阶——渐变背景
  17. Photoshop支持ICO图片格式(咋个办呢 zgbn)
  18. 【Linux】NDK
  19. 查找并下载开放的音乐数据(.mp3)
  20. PID原理及python简单实现与调参

热门文章

  1. “雪花”项目:Microsoft探索在.NET中实现手工内存管理
  2. 计算机程序的思维逻辑 (38) - 剖析ArrayList
  3. [置顶] 决策树绘图(二)
  4. 不知道为什么,很多优秀的产品知道人确很少
  5. H3C设备之RIP v2认证
  6. MVC Razor:自定义Helper方法
  7. REM——适合移动开发的自适应方案
  8. esxi宿主机的本地存储-非活动
  9. 庖丁解牛迭代器,聊聊那些藏在幕后的秘密 1
  10. IPMI从驱动到应用(中篇 )