Python Socket 编程
来源:互联网 发布:淘宝网男包包 编辑:程序博客网 时间:2024/06/18 13:15
Python Socket 编程
Socket 基本概念
Socket 是对 TCP/IP 协议族的一种封装,是应用层与TCP/IP协议族通信的中间软件抽象层。从设计模式的角度看来,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
Socket 还可以认为是一种网络间不同计算机上的进程通信的一种方法,利用三元组(ip地址,协议,端口)就可以唯一标识网络中的进程,网络中的进程通信可以利用这个标志与其它进程进行交互。
Socket 起源于 Unix ,Unix/Linux 基本哲学之一就是“一切皆文件”,都可以用打开(open)
-–> 读写(write/read)
-–> 关闭(close)
模式来进行操作。因此 Socket 也被处理为一种特殊的文件。
Socket 编程思想
TCP 服务器
1、创建套接字,绑定套接字到本地IP与端口
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.bind()
2、开始监听链接
s.listen()
3、进入循环,不断接受客户端的链接请求
While True: s.accept()
4、接收客户端传来的数据,并且发送给对方发送数据
s.sendall()
5、传输完毕后,关闭套接字
s.close()
TCP 客户端
1、创建套接字并链接至远端地址
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect()
2、链接后发送数据和接收数据
s.sendall()s.recv()
3、传输完毕后,关闭套接字
Socket 编程原理图
Socket 编程实践之服务器端代码
#!usr/bin/python#coding:utf-8import socketHOST = '127.0.0.1'PORT = 8001s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.bind((HOST, PORT))s.listen()print("The Server is listening %s:%s"%(HOST,PORT))while True:#无限循环等待用户连接 conn,addr = s.accept() print("connected by ",addr) while True:#无限循环接收用户消息 data = conn.recv(1024) print("client>",data.decode()) msg = 'Server have received your msg' conn.send(msg.encode()) conn.close()
Socket 编程实践之客户端代码
#!usr/bin/python# coding:utf-8import socketHOST = '127.0.0.1'PORT = 8001s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect((HOST,PORT))while True: msg = input("please you msg:") s.send(msg.encode()) data = s.recv(1024) print(data.decode())
要点
- pyhton3中,数据在网络中传输时,因采用byte类型传输,需data.enconde(),传输接收后转化deconde()
如图:
- 发送数据后,数据被分组发送需要,让接收端sleep()后接受,可全部接受数据
- 服务器需要两层循环
附录
Python 提供了两个基本的 socket 模块:
Socket
它提供了标准的BSD Socket API。SocketServer
它提供了服务器重心,可以简化网络服务器的开发。
下面讲解下 Socket模块功能
Socket 类型
套接字格式:socket(family, type[,protocal]) 使用给定的套接族,套接字类型,协议编号(默认为0)来创建套接字
创建TCP Socket:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
创建UDP Socket:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
Socket 函数
- TCP发送数据时,已建立好TCP链接,所以不需要指定地址,而UDP是面向无连接的,每次发送都需要指定发送给谁。
- 服务器与客户端不能直接发送列表,元素,字典等带有数据类型的格式,发送的内容必须是字符串数据。
服务器端 Socket 函数
客户端 Socket 函数
公共 Socket 函数
阅读全文
0 0
- python socket 编程手记
- Python Socket 编程
- python socket编程
- Python Socket编程
- Python Socket编程范例
- Python socket模块编程
- Python socket编程学习
- python socket编程
- [Python] 网络编程(Socket)
- Python socket编程
- Python socket编程
- Python socket编程
- Python socket 编程
- Python socket编程
- Python 中的 socket 编程
- Python socket编程
- Python 网络编程, socket
- Python socket编程简介
- ubuntu下安装和配置最新版JDK8傻瓜教程
- 改变HashMap中的值得问题
- zabbix
- Linux文本处理三剑客之sed
- 几个框架的责任链设计模式简析
- Python Socket 编程
- Android输入系统概述
- 【Android】EventBus 3.0 源码分析
- HOJX-1004
- UVA 442
- java实现二叉树的创建和各种遍历操作
- InputManagerService服务的初始化
- Lintcode删除排序链表中的重复元素
- C++学习,变量和基本类型