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编程的更多相关文章

  1. Python 黑帽编程大纲(变化中)

    Python 黑帽编程大纲(预览版) 教程说明: 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and Defense with Pytho ...

  2. Python黑帽编程 3.4 跨越VLAN

    Python黑帽编程 3.4 跨域VLAN VLAN(Virtual Local Area Network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分成多个VALN,也可以跨越物理 ...

  3. Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016

    Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Att ...

  4. Python黑帽编程1.2 基于VS Code构建Python开发环境

    Python黑帽编程1.2  基于VS Code构建Python开发环境 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Atta ...

  5. Python黑帽编程1.3 Python运行时与包管理工具

    Python黑帽编程1.3  Python运行时与包管理工具 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and ...

  6. PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析

    Python黑帽编程1.5  使用Wireshark练习网络协议分析 1.5.0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...

  7. Python黑帽编程 2.0 第二章概述

    Python黑帽编程 2.0 第二章概述 于 20世纪80年代末,Guido van Rossum发明了Python,初衷据说是为了打发圣诞节的无趣,1991年首次发布,是ABC语言的继承,同时也是一 ...

  8. Python黑帽编程2.1 Python编程哲学

    Python黑帽编程2.1  Python编程哲学 本节的内容有些趣味性,涉及到很多人为什么会选择Python,为什么会喜欢这门语言.我带大家膜拜下Python作者的Python之禅,然后再来了解下P ...

  9. Python黑帽编程2.2 数值类型

    Python黑帽编程2.2  数值类型 数值类型,说白了就是处理各种各样的数字,Python中的数值类型包括整型.长整型.布尔.双精度浮点.十进制浮点和复数,这些类型在很多方面与传统的C类型有很大的区 ...

随机推荐

  1. MyCP课下作业

    任务详情 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为 ...

  2. 20175202 《Java程序设计》第五周学习总结

    20175209 2018-2019-2 <Java程序设计>第五周学习总结 教材知识点总结 1.接口声明: 使用关键字interface来定义接口. 定义接口时使用关键字interfac ...

  3. Taro 生命周期

    Taro 新加的生命周期 说明 网址 componentDidShow() 在此生命周期中通过 this.$router.params,可以访问到程序初始化参数 https://nervjs.gith ...

  4. Linux文件同步

    简介 文件实时同步对于运维是个很常见的需求. 如集群的机器,需要上传个文件,之前的步骤是每台服务器分别上传. 做文件同步以后,只上传一台,其他机器自动同步. 目前实现实时同步的主流方案有 rsync+ ...

  5. docker中安装ps命令

    apt-get update && apt-get install -y procps

  6. 如何在本地同时管理github仓库和codingnet仓库?

    本文的前提条件是你在电脑上接入了github或者gitlab的仓库,现在要接入codingnet的仓库. 电脑上已经有了 github 的 ssh key,怎么继续接入codingnet 的git仓库 ...

  7. tomcat中间件提交表单数据量过大警告处理方案

    http://www.bubuko.com/infodetail-976418.html http://www.cnblogs.com/yg_zhang/p/4248061.html tomcat中间 ...

  8. C#模拟Https请求时出现 基础连接已经关闭 未能为 SSLTLS 安全通道建立信任关系

    //解决方法: //引入命名空间: using System.Security.Cryptography.X509Certificates; using System.Net.Security; // ...

  9. Git常用的操作记录(自用)

    分支常用操作命令 $ git branch -a //查看分支 $ git checkout -b dev origin/master  //切换/创建分支 $ git branch -vv 或 gi ...

  10. 去中心化存储项目终极指南 | Filecoin, Storj 和 PPIO 项目异同

    Filecoin,Storj 以及 PPIO 这三个存储公链的设计思路是不一样的,没有优劣之分,写这篇文章也并不是为了争论各项目的好坏对错.去中心化存储是一个长期商业赛道,不同团队在同一个赛道上往不同 ...