美文网首页
基于python的网络编程

基于python的网络编程

作者: 飞鸟无声 | 来源:发表于2016-12-17 16:38 被阅读0次

1.套接字

两个端点的程序之间的“信息通道”。程序可能分布在不同的计算机上(通过网络连接),通过套接字相互发送信息。

套接字包括两个:服务器套接字和客户机套接字。在创建一个服务器套接字后,让它等待连接。这样它就在某个网络地址处(IP地址和一个端口的组合)监听,直到有客户端套接字连接。连接完成后两者就可以进行交互了。

2.socket模块(套接字)

服务器端的通信过程和客服端通信过程:

socket  => blind => listen => accpect => send =>secv => close

服务器端套接字函数:

s.bind() 绑定地址(主机,端口号对)到套接字

s.listen() 开始 TCP 监听

s.accept() 被动接受 TCP 客户的连接,(阻塞式)等待连接的到来

客户端套接字函数:

s.connect() 主动初始化 TCP 服务器连接

s.connect_ex() connect()函数的扩展版本,出错时返回

出错码,而不是抛异常

公共用途的套接字函数:

s.recv() 接收 TCP 数据

s.send() 发送 TCP 数据

s.sendall() 完整发送 TCP 数据

s.recvfrom() 接收 UDP 数据

s.sendto() 发送 UDP 数据

s.getpeername() 连接到当前套接字的远端的地址

s.getsockname() 当前套接字的地址

s.getsockopt() 返回指定套接字的参数

s.setsockopt() 设置指定套接字的参数

s.close() 关闭套接字

3.socket()模块函数

socket()模块函数语法如下:

socket(socket_famliy,socket_type,protocol=0)

socket_family 可以是 AF_UNIX 或 AF_INET。socket_type可以是 SOCK_STREAM 或SOCK_DGRAM。protocol 一般不填,默认值为 0。

套接字地址:主机与端口

合法的端口号范围为 0 到 65535。其中,小于 1024 的端口号为系统保留端口。在 Unix 操作系统,保留的端口号(及其对应的服务/协议和套接字类型)可以通过/etc/services文件获得。

常用端口号列表可以从下面这个网站获得:

http://www.iana.org/assignments/port-numbers

4.socket()模块函数 --创建套接字

创建一个 TCP/IP 的套接字,调用 socket.socket():

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

创建TCP套接字时类型只能是SOCK_STREAM。

创建一个 UDP/IP 的套接字:

udpSocket=socket.socket(socket.AF_UNIX,socket.SOCK_DGRAM)

创建UDP套接字是类型只能是SOCK_DGRAM。

5.创建一个 TCP 服务器:

创建一个通用的 TCP 服务器的伪代码:

ss = socket() # 创建服务器套接字

ss.bind() # 把地址绑定到套接字上

ss.listen() # 监听连接

inf_loop: # 服务器无限循环

cs = ss.accept() # 接受客户的连接

comm_loop: # 通讯循环

cs.recv()/cs.send() # 对话(接收与发送)

cs.close() # 关闭客户套接字

ss.close() # 关闭服务器套接字(可选)

TCP 时间戳服务器:

创建一个 TCP 服务器程序,这个程序会把客户发送过来的字符串加上一个时间戳(格式:'[时间]数据')返回给客户。

创建一个通用的 TCP 客户端的伪代码:

cs = socket() # 创建客户套接字

cs.connect() # 尝试连接服务器

comm_loop: # 通讯循环

cs.send()/cs.recv() # 对话(发送/接收

cs.close() # 关闭客户套接字

创建一个 UDP 服务器:

由于 UDP 服务器不是面向连接的,所以直接等待进来的连接就好了。创建一个能接收客户的消息,在消息前加一个时间戳后返回的 UDP 服务器。伪代码:

ss = socket() # 创建一个服务器套接字

ss.bind() # 绑定服务器套接字

inf_loop: # 服务器无限循环

cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送)

ss.close() # 关闭服务器套接字

UDP 客户端伪代码如下:

cs = socket() # 创建客户套接字

comm_loop: # 通讯循环

cs.sendto()/cs.recvfrom() # 对话(发送/接收)

cs.close() # 关闭客户套接字

相关文章

  • 基于python的网络编程

    1.套接字 两个端点的程序之间的“信息通道”。程序可能分布在不同的计算机上(通过网络连接),通过套接字相互发送信息...

  • 3、Respberry+Python

    树莓派教程(基于python编程)--入门篇树莓派教程(基于python编程)--初级篇 默认安装为python2...

  • Python 网络编程

    Python 网络编程 1:什么是网络服务 指一些在网络上运行的、面向服务的、基于分布式程序的软件模块,网络服务采...

  • 网络编程

    网络 Socket 基于TCP协议的Socket编程 基于UDP协议的Socket编程

  • Python:基于 Socket 网络编程 + threadin

    1. Socket 协议 1.1. 什么是 Socket 协议 Socket 通常也称作"套接字",用于描述IP地...

  • 网络编程之TCP/IP协议

    网络编程之TCP/IP协议 网络编程分为两个不同的层次:一是基于Socket的低层次网络编程,二是基于URL的高层...

  • 高阶python 函数式编程

    高阶python 函数式编程 - 函数式 函数式编程(FunctionalProgramming) - 基于lam...

  • tcp和udp

    【Python网络编程】利用Python进行TCP、UDP套接字编程 http://www.cnblogs.com...

  • 海龟画图编辑器安装

    海龟画图介绍 海龟画图(turtle)是基于LOGO编程语言诞生的一个python绘图库,主要基于python2....

  • 网络基础介绍

    网络编程的两种 TCP socket编程,是网络编程的主流。之所以叫Tcp socket编程,是因为底层是基于Tc...

网友评论

      本文标题:基于python的网络编程

      本文链接:https://www.haomeiwen.com/subject/yrjwmttx.html