python SOCKET编程基础入门


Posted in Python onFebruary 27, 2021

一、UDP编程

1.客户端Client:发起访问的一方。

2.服务器端

3.server段编程

(1)建立socket,socket是负责具体通信的一个实例

(2)绑定,为创建的socket指派固定的端口和IP地址

(3)接受对方发送内容

(4)给对方发送反馈,此步骤为非必须步骤

4.Client端编程

(1)建立通信的socket

(2)发送内容到指定服务器

(3)接受服务器给定的反馈内容

5.模拟一下这个过程

(1)我们先建立一个服务器的函数

#服务器案例

import socket

​

#模拟服务器的函数

def serverFunc():

  #1.建立socket

  #socket.AF_INET:使用IPV4协议族

  #socket.SOCK_DGRAM:使用UDP通信

  sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

  #2.绑定ip和port

​

  #127.0.01:这个ip地址代表的是机器本身

  #7852:随机指定的端口号

  #地址是一个tuple类型,(ip.port)

  addr = ("127.0.0.1",7852)

  sock.bind(addr)

​

  #接受对方消息

  #等待方式为死等,没有其他可能性

  #recvfrom接受的返回值是一个元组,前一项表示数据,后一项表示地址

  #参数的含义是缓冲区大小

  #rst = sock.recvfrom(500)

  data,addr = sock.recvfrom(500)

​

  print(data)

  print(type(data))

​

  #发送过来的数据是bytes格式,必须通过解码才能得到str格式内容

  #decode默认参数是utf8

  text = data.decode()

  print(type(text))

  print(text)

​

  #给对方反馈的消息

  rsp = "I am very hungry now"

​

  #发送的数据需要编程成bytes格式

  #默认时utf8

  data = rsp.encode()

  sock.sendto(data,addr)

  

if __name__ == "__main__":

  print("Start Server")

  serverFunc()

print("End Server")

(2)然后创建一个客户端的函数

import socket

def clientFunc():

  sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

  text = "you are very cool"

​

  #发送的数据必须是bytes格式

  data = text.encode()

  #发送

  sock.sendto(data,("127.0.0.1",7852))

  data,addr =sock.recvfrom(200)

​

  data = data.decode()

  print(text)

​

if __name__ == "__main__":

  print("Start Client")

  clientFunc()

print("End Client")

(3)我们先启动服务器端函数

出现如下图像,它是创建了一个sock,然后自己绑定到127.0.0.1:7852,运行到sock.recvfrom(500)这里死等客户端发消息

python SOCKET编程基础入门

(4)再启动客户端函数

出现如下发送编码后的​text内容到服务器(127.0.0.1:7852),服务器成功接收后返回you are cool这句话。

python SOCKET编程基础入门

(5)我们再看服务器的函数那里

接受了bytes格式的字符串,并打印出来了,然后再解码打印出来,最后把you are cool返回​客户端。

python SOCKET编程基础入门

(6)这里有个地方没有办法:因为我们在一台电脑上做的测试,所以相当于自言自语,​不如在两台电脑上进行试验。​

二、源码

D33_1_ServerProgramme.py

D33_2_ClientProgramme.py

https://github.com/ruigege66/Python_learning/blob/master/D33_1_ServerProgramme.py

https://github.com/ruigege66/Python_learning/blob/master/D33_2_ClientProgramme.py

以上就是python SOCKET编程基础入门的详细内容,更多关于python SOCKET编程的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
在Python上基于Markov链生成伪随机文本的教程
Apr 17 Python
简述:我为什么选择Python而不是Matlab和R语言
Nov 14 Python
Python GUI布局尺寸适配方法
Oct 11 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
Dec 27 Python
Python 从一个文件中调用另一个文件的类方法
Jan 10 Python
快速解决vue.js 模板和jinja 模板冲突的问题
Jul 26 Python
Python Django 页面上展示固定的页码数实现代码
Aug 21 Python
简单了解Python读取大文件代码实例
Dec 18 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
Mar 23 Python
利用Python制作动态排名图的实现代码
Apr 09 Python
浅谈Python基础之列表那些事儿
May 11 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
Apr 02 Python
python 对xml解析的示例
Feb 27 #Python
python如何发送带有附件、正文为HTML的邮件
Feb 27 #Python
pytorch __init__、forward与__call__的用法小结
Feb 27 #Python
python 实现有道翻译功能
Feb 26 #Python
Python爬取酷狗MP3音频的步骤
Feb 26 #Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 #Python
用python 绘制茎叶图和复合饼图
Feb 26 #Python
You might like
php foreach 使用&(与运算符)引用赋值要注意的问题
2010/02/16 PHP
使用PHP计算两个路径的相对路径
2013/06/14 PHP
Codeigniter控制器controller继承问题实例分析
2016/01/19 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
Javascript 面向对象(三)接口代码
2012/05/23 Javascript
用js通过url传参把数据从一个页面传到另一个页面
2014/09/01 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
2015/12/07 Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
2016/05/12 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
2016/07/01 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
Python中对列表排序实例
2015/01/04 Python
Python使用minidom读写xml的方法
2015/06/03 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
用python找出那些被“标记”的照片
2017/04/20 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
Django中create和save方法的不同
2019/08/13 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
python 连续不等式语法糖实例
2020/04/15 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
2020/12/14 Python
详解Pycharm第三方库的安装及使用方法
2020/12/29 Python
matplotlib grid()设置网格线外观的实现
2021/02/22 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
德国高尔夫商店:Par71.de
2020/11/29 全球购物
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
电子商务专业学生的学习自我评价
2013/10/27 职场文书
《伯牙绝弦》教学反思
2014/03/02 职场文书
六查六看自查报告
2014/10/14 职场文书
深入理解MySQL中MVCC与BufferPool缓存机制
2022/05/25 MySQL