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. Python循环_for&while

    格式:for x in xs['James','Lily','Candy']: print(x) —————————————————————————————————— for循环就是把每个元素代入变量 ...

  2. AJAX实现注册

    先添加点击事件: <input type="button" id="submittt" value="注册"/> 展示提示消息: ...

  3. Open Distro for Elasticsearch – How Different Is It?

    转自:https://logz.io/blog/open-distro-for-elasticsearch Last month, AWS announced an initiative called ...

  4. 深入理解CSS选择器优先级

    题外话 今天把 <CSS REFACTORING>(中文名叫<CSS重构:样式表性能调优>)电子书粗略的浏览了一遍,这本书很薄,150页左右,首先是介绍了什么是重构并举了两个简 ...

  5. python通过openpyxl操作excel

    python 对Excel操作常用的主要有xlwt.xlrd.openpyxl ,前者xlwt主要适合于对后缀为xls比较进行写入,而openpyxl主要是针对于Excel 2007 以上版本进行操作 ...

  6. python 画图工具matplotlib 去掉坐标轴和坐标的方法

    1. 去掉坐标轴的方法: plt.axis('off') 2.去掉刻度的方法: plt.xticks([]) plt.yticks([]) 以上语句需要将其置于 plt.show() 之前,plt.i ...

  7. RDMS三剑客的服务

    @echo off title %1 goto %1 echo Error... echo. goto bexit :orcl_stop rem 顺序:EM.LSN.SID rem echo stop ...

  8. JavaBean找到项目下的文件这里是\WEB-INF\classes\下面的属性文件

    String baseinfo="/com/Bean/DBhelp.properties"; filename=getClass().getClassLoader().getRes ...

  9. ORACLE 存储过程中保存用户自定义异常信息的一种方式

    1.创建错误日志表: create table REP_LOGS ( log_s_no NUMBER not null, log_date DATE default sysdate not null, ...

  10. 3.Qt GUI中一些操作记录

    一.如何在Widget中利用代码添加背景图片 this->setAutoFillBackground(true); // QPalette palette = this->palette( ...