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操作xml文件详细介绍
Jun 09 Python
Python常见数据结构详解
Jul 24 Python
python脚本替换指定行实现步骤
Jul 11 Python
详解python中的 is 操作符
Dec 26 Python
Python实现上下班抢个顺风单脚本
Feb 07 Python
使用python实现BLAST
Feb 12 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
Jun 11 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
Aug 02 Python
python argparse传入布尔参数false不生效的解决
Apr 20 Python
Python基于jieba, wordcloud库生成中文词云
May 13 Python
Python单元测试及unittest框架用法实例解析
Jul 09 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 cookis创建实现代码
2009/03/16 PHP
PHP高级对象构建 多个构造函数的使用
2012/02/05 PHP
php中过滤非法字符的具体实现
2013/10/29 PHP
详解php的socket通信
2015/08/11 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
php基于websocket搭建简易聊天室实践
2016/10/24 PHP
浅谈PHP进程管理
2019/03/08 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
原生js结合html5制作简易的双色子游戏
2015/03/30 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
js中遍历Map对象的简单实例
2016/08/08 Javascript
微信小程序 实战程序简易新闻的制作
2017/01/09 Javascript
Bootstrap缩略图的创建方法
2017/03/22 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
2020/02/13 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
python logging类库使用例子
2014/11/22 Python
Python教程之全局变量用法
2016/06/27 Python
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
python+django加载静态网页模板解析
2017/12/12 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
美国手机支架公司:PopSockets
2019/11/27 全球购物
拉丁舞学习者的自我评价
2013/10/27 职场文书
车工岗位职责
2013/11/26 职场文书
汽车促销活动方案
2014/03/31 职场文书
经营管理策划方案
2014/05/22 职场文书
小学四年级班主任工作经验交流材料
2015/11/02 职场文书
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python