Python连载52-SOCKET编程示例
一、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)这里死等客户端发消息

(4)再启动客户端函数
出现如下发送编码后的text内容到服务器(127.0.0.1:7852),服务器成功接收后返回you are cool这句话。

(5)我们再看服务器的函数那里
接受了bytes格式的字符串,并打印出来了,然后再解码打印出来,最后把you are cool返回客户端。

(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
2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Python连载52-SOCKET编程示例的更多相关文章
- python基础之socket编程 (转自林海峰老师)
python基础之socket编程 阅读目录 一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 ...
- Python 基础之socket编程(二)
Python 基础之socket编程(二) 昨天只是对socket编程做了简单的介绍,只是把socket通信的框架搭建起来,要对其中的功能进行进一步的扩充,就来看看今天的料哈! 一.基于tcp的套接字 ...
- 多线程Java Socket编程示例
package org.merit.test.socket; import java.io.BufferedReader; import java.io.IOException; import jav ...
- Python 基础之socket编程(三)
python 基础之socket编程(三) 前面实现的基于socket通信只能实现什么呢?在tcp协议的通信中就是一个用户说一句,服务端给你回一句,你再给服务端说一句,服务端再给你回一句,就这样一直友 ...
- Python 基础之socket编程(一)
Python 基础之socket编程(一) 可以进行通信玩儿了,感觉不错不错,网络通信就像打电话,我说一句你听一句之后,你再说一句,我听一句,就这样.....下去了.不扯淡了,来来来,看看今天都搞了点 ...
- Python Socket 编程示例 Echo Server
简评:我们已经从「Python Socket 编程概览」了解了 socket API 的概述以及客户端和服务器的通信方式,接下来让我们创建第一个客户端和服务器,我们将从一个简单的实现开始,服务器将简单 ...
- 十三python基础之socket编程
阅读目录 一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 八 基于UDP的套接字 九 粘包现 ...
- python基础之socket编程
一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 八 基于UDP的套接字 九 粘包现象 十 什么是 ...
- Linux socket编程示例(最简单的TCP和UDP两个例子)
一.socket编程 网络功能是Uinux/Linux的一个重要特点,有着悠久的历史,因此有一个非常固定的编程套路. 基于TCP的网络编程: 基于连接, 在交互过程中, 服务器和客户端要保持连接, 不 ...
- python进阶---Python中的socket编程
初识socket编程 一.前言 socket基于C\S架构(客户端\服务端)的编程模型,在Python中是以socket模块存在的. Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是 ...
随机推荐
- Zstack的安装部署
ZStack是下一代开源的云计算IaaS(基础架构即服务)软件. 它主要面向的是未来的智能数据中心,通过提供全完善的API来管理包括计算.存储和网络在内的数据中心的各种资源.跟OpenStack相比, ...
- linux 执行 javac 报错 javac: command not found
bash: javac: command not found java 版本 1.8 [root@localhost home]# java -version openjdk version &quo ...
- Appium 1.15.1版本的appium-doctor不是内部或者外部命令的问题
先讲一下整个app自动化环境的部署过程: 1.安装appium 2.安装nodejs 3.查看appium的环境是否完成 问题:安装appium和nodejs都没啥问题,直接到对应的官网下载然后安装即 ...
- 基于django的个人博客网站建立(五)
基于django的个人博客网站建立(五) 前言 网站效果可点击这里访问 之前鸽了两天,今天继续再写点 主要内容 今天加了个展示照片的功能,就叫他生活记录吧 先建表 class Record(model ...
- java之父类中的构造器是否能被子类继承?
子类默认继承父类的属性和方法,但不会继承父类的构造器,而是在子类被实例化时会默认调用父类的空构造器.子类在创建的时候会调用自己的空构造器,并在空构造器会隐式调用super(),即父类的空构造器.如果父 ...
- Java题库——Chapter13抽象类和接口
)What is the output of running class Test? public class Test { public static void main(String[ ] arg ...
- java高并发系列 - 第26篇:学会使用JUC中常见的集合,常看看!
这是java高并发系列第26篇文章. 环境:jdk1.8. 本文内容 了解JUC常见集合,学会使用 ConcurrentHashMap ConcurrentSkipListMap Concurrent ...
- 使用dom4j类操作xml文档
dom4j操作xml数据 1.Document对象相关 ①读取XML文件,获得document对象. SAXReader reader = new SAXReader(); Document docu ...
- [Spring]:java.lang.NoSuchMethodError: 'java.lang.String javax.annotation.Resource.lookup()'
错误信息 11月 05, 2019 9:32:15 下午 org.springframework.test.context.TestContextManager prepareTestInstance ...
- JavaScript 赋值
JavaScript 赋值运算符 赋值运算符向 JavaScript 变量赋值. 运算符 例子 等同于 = x = y x = y += x += y x = x + y -= x -= y x = ...