python的socke编程
python的sock编程分为TCP编程和UDP编程,两者不同在于,TCP需要首先建立连接才能发送接收数据,而UDP则可以直接发送接收不需要预先建立连接。
tcp编程,我总结为4步
TCP的server端
1,建立socket对象,这里TCP和UDP是通用的比如
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)##这个是建立TCP的socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)##这个是建立UDP的socket对象
2, 绑定tcp的IP和端口
s.bind(('127.0.0.1', 9000))
3,创建最大连接数量
s.listen(5) ,这里创建了最大5个连接数
4,获取客户端的socket对象,记住这里是获取的客户端传过来的socket对象,也就是客户端的IP和端口,等等其他一些信息
cli_socket, addr = s.accept()
cli_socket,客户端传过的socket信息
addr,客户端的IP地址和端口
5,接收或者发送数据
这里是是这样子的,建立连接后,如果服务端先发送一个数据过去,那么客户端必须先接收一个,反过来相同,客户端如果先发送一个服务端必须先接收一个,然后才能再发送接收,反正服务端和客户端就是一发一收,一收一发,轮流来
cli_socket.send("hello")
cli_socket.recv(1024),这里的1024指每次最多接收1024字节
最后要记得
cli_socket.close() ,关闭远程客户端连接
以上是整个socket服务端的简单流程。
TCP的客户端
1,首先创建一个socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
2,连接到服务端
s.connect(('127.0.0.1', 9000))
3, 开始发送或者接收数据
s.send("hello")
s.recv(1024)
客户端比较简单。
UDP就更简单了,不需要预先建立连接,直接发送或者接收数据即可
UDP服务端
1, 建立socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) ###注意和tcp的不同
2,绑定IP和端口
s.bind(('127.0.0.1', 9999))
3,创建客户端的socket对象
接收数据,并制定每次最大字节
data, addr = s.recvfrom(1024)
发送数据
s.sendto(b'Hello, %s !' %data, addr) ###注意这里和TCP不同了,这里的发送对象的实体是服务端,并不是客户端的了
4,客户端方面
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
发送数据
s.sendto(data, ('127.0.0.1', 9999))
接收数据
s.recv(1024).decode('utf-8')
UDP方面比较简单,不用预先建立连接,暂时先写这么多,以后有需求地方再补充。
python的socke编程的更多相关文章
- Python 黑帽编程大纲(变化中)
Python 黑帽编程大纲(预览版) 教程说明: 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and Defense with Pytho ...
- Python黑帽编程 3.4 跨越VLAN
Python黑帽编程 3.4 跨域VLAN VLAN(Virtual Local Area Network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分成多个VALN,也可以跨越物理 ...
- Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016
Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Att ...
- Python黑帽编程1.2 基于VS Code构建Python开发环境
Python黑帽编程1.2 基于VS Code构建Python开发环境 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Atta ...
- Python黑帽编程1.3 Python运行时与包管理工具
Python黑帽编程1.3 Python运行时与包管理工具 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and ...
- PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析
Python黑帽编程1.5 使用Wireshark练习网络协议分析 1.5.0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...
- Python黑帽编程 2.0 第二章概述
Python黑帽编程 2.0 第二章概述 于 20世纪80年代末,Guido van Rossum发明了Python,初衷据说是为了打发圣诞节的无趣,1991年首次发布,是ABC语言的继承,同时也是一 ...
- Python黑帽编程2.1 Python编程哲学
Python黑帽编程2.1 Python编程哲学 本节的内容有些趣味性,涉及到很多人为什么会选择Python,为什么会喜欢这门语言.我带大家膜拜下Python作者的Python之禅,然后再来了解下P ...
- Python黑帽编程2.2 数值类型
Python黑帽编程2.2 数值类型 数值类型,说白了就是处理各种各样的数字,Python中的数值类型包括整型.长整型.布尔.双精度浮点.十进制浮点和复数,这些类型在很多方面与传统的C类型有很大的区 ...
随机推荐
- leetcode中的python学习
list.extend() list1.extend(list2(or string)) 将list2(or string)的所有元素添加到list1中: list1.append(list2(or ...
- VirtualBox虚拟机禁止时间同步
某机器为客户提供,宿主机时间快了20分钟,导致虚拟机时间也跟着快20分钟,每次更改完虚拟机时间,不到1分钟时间又变回去了 在一些情况下必须让VirtualBox虚拟客户机的时间和主机不同步,百度了一番 ...
- 剑指offer 5.栈和队列 用两个栈实现队列
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 解题思路:1,整体思路是元素先依次进入栈1,再从栈1依次弹出到栈2,然后弹出栈2顶部的元素,整个过程 ...
- jQuery: 判断from表单是否修改
<script> $(function() { $("#myform :input").change(function(){ $("#myform" ...
- 阿里云CentOS7服务器利用LVM分区挂载磁盘全记录
1.进入服务器后,首先利用fdisk -l来观察磁盘信息,可以看出红线标注处,有两块硬盘信息,分别是40G和300G 2.同时你也可以观察到分区信息,40G的硬盘已经分了一个区vda1,大小(Bloc ...
- ObjectARX2012+ObjectARX Wizards2012+AutoCAD2012+MVS2008 环境配置
1 版本选择 ObjectARX本身采用的MVS编译平台,因此选择ObjectARX的编译平台作为二次开发的平台,兼容性最好,当然别的平台也不是一定不可以.目前已知的对应关系如下: R15 -- ...
- 双网卡单IP实现网卡冗余与负载均衡
WINDOWS下: 所谓双网卡,就是通过软件将双网卡绑定为一个IP地址,这个技术对于许多朋友来说并不陌生,许多高档服务器网卡(例如intel8255x系列.3COM服务器网卡等)都具有多网卡绑定功能, ...
- C# 利用Unity 实现IOC+AOP
public interface INoticy { void Noticy(string msg); } public class SMSNoticy : INoticy { public void ...
- Kubernetes的三种外部访问方式:NodePort、LoadBalancer和Ingress(转发)
原文 http://cloud.51cto.com/art/201804/570386.htm Kubernetes的三种外部访问方式:NodePort.LoadBalancer和Ingress 最近 ...
- html网页中如何给文字加入下划线
网页中一些重要的文字或者特殊性高的文字,例如:链接,标注等我们需要加上下划线,那么这里我们就需要使用到<U>标签了,写法如下 字体下划线: <u>这里添加内容</u> ...