pythonsocket中tcp通信接收不到数据_简单说说Python Socket编程步骤?
公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助!
小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。
废话不多说,开始今天的题目:
问:简单说说Python socket编程步骤?
答:Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。
Python 提供了两个基本的 socket 模块。第一个是 Socket,它提供了标准的 BSD Sockets API。第二个是 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。
下面我们分别来说说基于TCP和UDP的套接字编程步骤?
创建TCP服务器示例:
1、创建socket对象
2、绑定主机和端口,应当是一个元组
3、监听
4、等待连接
5、接受数据
6、发送数据
7、关闭套接字
import socket# 明确配置变量
ip_port = ('127.0.0.1',8080)
back_log = 5
buffer_size = 1024# 创建一个TCP套接字
ser = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 套接字类型AF_INET, socket.SOCK_STREAM tcp协议,基于流式的协议
ser.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # 对socket的配置重用ip和端口号# 绑定端口号
ser.bind(ip_port) # 写哪个ip就要运行在哪台机器上# 设置半连接池
ser.listen(back_log) # 最多可以连接多少个客户端while 1:# 阻塞等待,创建连接
con,address = ser.accept() # 在这个位置进行等待,监听端口号 while 1:try:# 接受套接字的大小,怎么发就怎么收
msg = con.recv(buffer_size)if msg.decode('utf-8') == '1':# 断开连接
con.close()
print('服务器收到消息',msg.decode('utf-8'))except Exception as e:break# 关闭服务器
ser.close()
创建TCP客户端示例:
1、创建socket对象2、连接主机,应当是一个元组3、发送数据4、接收数据5、关闭
import socket
p = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
p.connect(('127.0.0.1',8080))while 1:
msg = input('please input')# 防止输入空消息if not msg:continue
p.send(msg.encode('utf-8')) # 收发消息一定要二进制,记得编码if msg == '1':break
p.close()
创建UDP服务器示例:
1、创建socket套接字
2、绑定3、接受连接4、发送数据5、关闭
from socket import *
s= socket(AF_INET, SOCK_DGRAM) # 数据报式的套接字
s.bind(('127.0.0.1', 8080))while True:
data, address = s.recvfrom(1024)print data, address,type(data)
s.sendto('this is the UDP server', address)
s.close()
创建UDP客户端示例:
1、创建套接字2、连接3、发送数据4、接收数据5、关闭
from socket import *
HOST = '127.0.0.1';PORT = 8080;
addr = (HOST,PORT) # 设置IP、端口号、
s = socket(AF_INET, SOCK_DGRAM) # 建立UDP的socket 这个称之为套接字。
data = 'hello';
data = data.encode(encoding="utf-8") # 指定一个字符串,并转换成socket发送的二进制流。while True:
s.sendto(data, addr) # 发送数据# data, addr = s.recvfrom(1024) # 接收数据和返回地址print (data.decode(encoding="utf-8"))
print(addr)
s.close()
至于TCP和UDP的区别是什么?
推荐大家一篇文章:
https://www.cnblogs.com/williamjie/p/9390164.html
如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!
更多题目:
1-50、Python面试1-50题汇总51、说说Python中闭包是什么?52、read、readline和readlines的区别?53、说说Python中with的用法?54、Python中连接字符串用join还是+?55、Python中search和match的区别?56、说说Python中字符串大小写转换?57、Python反转三位整数有几种方法?58、说说Python中贪婪和非贪婪匹配?59、说说Python中正负索引?60、说说Python中切片是什么?61、Python新式类和旧式类的区别?62、说说Python中PEP8到底是什么?63、Python实现深度优先与广度优先?64、说说Python类中的self参数?
关注小猿公众号,每天学习一道题
pythonsocket中tcp通信接收不到数据_简单说说Python Socket编程步骤?相关推荐
- pythonsocket中tcp通信接收不到数据_TCP 为什么三次握手而不是两次握手(正解版)...
先说结论 为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的. 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已 ...
- qint64转为qstring qt_Qt项目中TCP通信的实现方式经验总结(服务端部分)
总第20篇 本文接第19篇,继续梳理TCP通信过程中的重要知识.本文主要系统地讲解通信服务端部分,以供在以后的项目开发过程中参考.如果觉得不错可以关注专栏 面向加薪编程C/C++ ,第一时间接收文章更 ...
- c++语言 tcp例子,C++中TCP通信实现文件传输
作为Computer networks课程的一个project,我们需要实现用TCP在mininet中client和server的相互通信,需要能够传输文本文件,binary file 和image ...
- python中输入字符串_简单讲解Python中的字符串与字符串的输入输出
简单讲解Python中的字符串与字符串的输入输出 发布于 2016-03-26 14:35:42 | 110 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向 ...
- TCP通信接收数据不完整的解决方法
一.TCP协议.Socket编程流程 TCP/IP协议及socket封装 套接字的编程流程: 二.Send 和 Recv的基本介绍 2.1 Send函数 int send( SOCKET s, con ...
- zynq tcp如何从网口发数据_基于TCP/IP协议的电口通信
之前有介绍过TCP/IP协议的实现是通过轻量级LWIP协议实现的,具体在FPGA中实现又可以分为多种方式,具体如下: 图8‑98 LWIP协议在FPGA中的实现方式 LWIP可以通过硬核实现或者软核实 ...
- stm32串口接收不定长数据_基于STM32之UART串口通信协议--接收
一.前言 1.简介 回顾上一篇UART发送当中,已经讲解了如何实现UART的发送操作了,接下来这一篇将会继续讲解如何实现UART的接收操作. 2.UART简介 嵌入式开发中,UART串口通信协议是我们 ...
- python socket编程之双方相互通信简单实例_Python socket实现的简单通信功能示例
套接字(socket)是计算机网络数据结构,在任何类型的通信开始之前,网络应用程序必须创建套接字,可以将其比作电话的插孔,没有它将无法进行通信 常用的地址家族 AF_UNIX:基于文件,实现同一主机不 ...
- python socket编程之双方相互通信简单实例_扣丁学堂Python开发socket实现简单通信功能实例...
扣丁学堂Python开发socket实现简单通信功能实例 2018-08-21 14:12:38 747浏览 今天扣丁学堂Python培训老师给大家结合实例介绍一下关于socket实现的简单通信功能, ...
- 看完之后保证你对socket编程步骤胸有成竹。 C++ Socket网络编程基础详解(TCP)
C++ Socket网络编程基础详解(TCP版) 网络编程,就是编写程序使得两台计算机交换数据,其实从本质上来讲,网络编程最终所实现的功能,和我们文件的输入输出很相似,只是文件输入输出的对象 ...
最新文章
- 解决teamviewer试用期到期的方法
- sqoop mysql where_Sqoop基本语法简介
- 160个Crackme006
- GIT的基本操作(建立自己的git远程仓库)
- 浅入深出之Java集合框架(中)
- php文章自动采集器,使用php蓝天采集器抓取今日头条ajax的文章内容
- 多媒体制作技术心得体会_多媒体课件制作的学习心得体会
- android 吃鸡模拟器,《刺激战场模拟器》电脑版 逍遥安卓模拟器智能键吃鸡设置...
- 【数模】使用SPSS进行聚类分析
- E45: 'readonly' option is set (add ! to override)
- lighttpd使用
- SpringBoot 文件上传(可配置文件上传路径)
- 【OpenCV 例程200篇】220.对图像进行马赛克处理
- 5福最多多少钱_2018支付宝集5福攻略介绍 一天内集齐不是没可能
- 2020.5.31 牛客“科林明伦杯” A.点对最大值【树形dp】
- 交互设计超全学习清单:3本书,2个播客,6门视频课程,8个优秀网站
- 【bzoj 1616】: [Usaco2008 Mar]Cow Travelling游荡的奶牛 dp
- 小程序配置“企业微信客服”的流程步骤
- photoshop顶尖设计大师(一)
- 基于微信公众号扫描设备二维码并完成设备激活操作
热门文章
- BlockingQueue原理分析(ReentrantLock、Condition的实践)
- 使用 SpringBoot 写 RESTful风格 增删改查接口
- Nacos整合SpringCloud的自动注册原理
- Linux中bond的七种网卡绑定模式详解
- Python3_tuple
- 开启tomcat的gzip
- 使用Fresco实现简单的显示一张图片
- vSphere 5.5 App HA学习-1、App HA概述
- Helloj2ee学Silverlight之五——Silverlight的编程模型
- ubuntu13.10 归档管理器解压zip文件中文乱码问题的解决(亲测成功)