UDP网络程序,客户端和服务端交互原理
创建一个udp客户端程序的流程是简单,具体步骤如下:
- 创建客户端套接字
- 发送/接收数据
- 关闭套接字
UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。 UDP传输数据时有大小限制,每个被传输的数据报必须限定在64KB之内。 UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方。
UDP是一种面向无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。但UDP操作简单,而且仅需要较少的监护,因此通常用于局域网高可靠性的分散系统中client/server应用程序。例如视频会议系统,并不要求音频视频数据绝对的正确,只要保证连贯性就可以了,这种情况下显然使用UDP会更合理一些。
现在给大家展现一个关于服务端和客户端的交互端口程序代码如下,具体介绍在代码中有详细的注明:
'''
socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:
它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的
例如我们每天浏览网页、QQ 聊天、收发 email 等等
'''
客户端代码:
from socket import *
# 发起udp请求
resSocket=socket(AF_INET,SOCK_DGRAM) # 要发送的地址,服务端地址
sendAddr=('192.168.8.195',)
# 绑定本地端口
# ip地址和端口号,ip一般不用写,表示本机的任何一个ip
resSocket.bind(('192.168.8.195',))
#发送方也可以绑定
# resSocket.bind(bindAddr)
n=
while n>: # . 发送数据到指定的电脑上
# 第一个参数是二进制对象,要将字符串转换为二进制对象,
# 需要使用encode方法,根据对方接收什么编码,进行解码。
sendData = input('请输入客户端要发送的数据:')
# sendData要用encode('gbk')编码成byte型
resSocket.sendto(sendData.encode('gbk'), sendAddr)
# 接收服务端信息
recvData=resSocket.recvfrom()
# 发送的内容recvData[].decode('gbk')要用decode进行解码,解码的类型和发送端编码类型一致
print('发送方%s,端口号%s:%s'%(recvData[][],recvData[][],recvData[].decode('gbk'))) n=n-
resSocket.close()
服务端代码:
from socket import *
#. 创建套接字
# 创建请求协议
# SOCK_DGRAM表示UDP协议,AF_INET表示ipv4
udpSocket=socket(AF_INET,SOCK_DGRAM) # 发送/接收数据
#. 准备接收方的地址
# 准备要发送数据到的客户ip地址,即客户端
sendAddr=('192.168.8.195',)
# 绑定本端口地址,服务端和客户端ip地址可以一样但是端口必须不一样
udpSocket.bind(('192.168.8.195',))
n=
while n>:
# 第一时间接收客户端到信息,
recvData=udpSocket.recvfrom()
# 输出收到的信息
print('发送方:%s端口号:%s:%s'%(recvData[][],recvData[][],recvData[].decode('gbk')))
# . 从键盘获取数据
sendData = input('请输入要发送的数据:')
# . 发送数据到指定的电脑上:向客户端发送数据
udpSocket.sendto(sendData.encode('gbk'), sendAddr) n=n-
# 5关闭请求协议(关闭套接字)
udpSocket.close()
UDP网络程序,客户端和服务端交互原理的更多相关文章
- c++ 网络编程(一)TCP/UDP windows/linux 下入门级socket通信 客户端与服务端交互代码
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9601511.html c++ 网络编程(一)TCP/UDP 入门级客户端与服务端交互代码 网 ...
- Android客户端与服务端交互之登陆示例
Android客户端与服务端交互之登陆示例 今天了解了一下android客户端与服务端是怎样交互的,发现其实跟web有点类似吧,然后网上找了大神的登陆示例,是基于IntentService的 1.后台 ...
- java客户端与服务端交互通用处理 框架解析
一.综述 java 客户端与服务端交互过程中,采用NIO通讯是异步的,客户端基本采用同一处理范式,来进行同异步的调用处理. 处理模型有以下几个要素: 1. NIO发送消息后返回的Future 2. 每 ...
- Java实现UDP之Echo客户端和服务端
Java实现UDP之Echo客户端和服务端 代码内容 采用UDP协议编写服务器端代码(端口任意) 编写客户机的代码访问该端口 客户机按行输入 服务器将收到的字符流和接收到的时间输出在服务器consol ...
- Fresco 源码分析(二) Fresco客户端与服务端交互(1) 解决遗留的Q1问题
4.2 Fresco客户端与服务端的交互(一) 解决Q1问题 从这篇博客开始,我们开始讨论客户端与服务端是如何交互的,这个交互的入口,我们从Q1问题入手(博客按照这样的问题入手,是因为当时我也是从这里 ...
- Fresco 源码分析(二) Fresco客户端与服务端交互(3) 前后台打通
4.2.1.2.4 PipelineDraweeControllerBuilder.obtainController()源码分析 续 上节中我们提到两个核心的步骤 obtainDataSourceSu ...
- java网络编程客户端与服务端原理以及用URL解析HTTP协议
常见客户端与服务端 客户端: 浏览器:IE 服务端: 服务器:web服务器(Tomcat),存储服务器,数据库服务器. (注:会用到Tomact服务器,在webapps下有一个自己创建的目录myweb ...
- cas sso单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析
转:http://blog.csdn.net/ae6623/article/details/8848107 1)PPT流程图:ppt下载:http://pan.baidu.com/s/1o7KIlom ...
- SSO单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析
落雨 cas 单点登录 一.用户第一次访问web1应用. ps:上图少画了一条线,那一条线,应该再返回来一条,然后再到server端,画少了一步...谢谢提醒.而且,重定向肯定是从浏览器过去的.我写的 ...
随机推荐
- C# 网络请求
C#自带网络请求 由于偶尔会用到服务端请求,写下随笔,以便下次使用 . var Url = "http://rueiqiang.vicp.net/api/Franchisee/QueryIn ...
- BZOJ1283 序列(费用流)
不妨看做是先用k个指针指向被选择的前k个元素,然后每次将选中当前第一个元素的指针移到最后,并且需要满足位置变化量>=m.显然这样可以构造出所有的合法方案.那么可以以此建立费用流模型,以一条流量k ...
- AJAX--总结
AJAX 2018-9-6 14:42:53 AJAX简介 HTTP协议------>HTTP权威指南 请求:客户端去向服务端请求一个文件 响应:服务端把对应的文件内容返回给客户端, ...
- 概率dp总结 正在更新
借bin神一句话 概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 先推公式 多个 -> 一个 明确dp[i]代表什么意 ...
- POJ3268(Silver Cow Party)
题意: 有n头牛去第x个点开party(有点高大上~),单向路,去到还得回来,问这n头牛每一头花费的总时间的最大值是多少 模板spfa: #include <iostream> #incl ...
- MT【223】二次函数最大最小
若函数$f(x)=ax^2+20x+14(a>0)$对任意实数$t$,在闭区间$[t-1,t+1]$上总存在两实数$x_1,x_2$,使得$|f(x_1)-f(x_2)|\ge8$成立,则实数$ ...
- MT【57】2017联赛一试解答倒数第二题:一道不等式的最值
注:康拓诺维奇不等式的应用
- [TJOI2011]构造矩阵
考虑优化贪心,不回溯,对于每一位,你都判一下放0的话后面是否有解,用网络流判是否可以完美匹配就行了. 但这样时间复杂是错的,所以不必每次都重新建图,现在原来的图中看一下该行列是否已经匹配,若没有,则强 ...
- python—— 写入错误UnicodeEncodeError的解决办法
在写python爬虫过程中,有时候吧结果写入到txt文件,但是会遇到UnicodeEncodeError. 错误原因—— 把文件内容,写入到文件中时,出错了. 而出错的原因其实是,python系统,在 ...
- JNative 传递参数bug
下载JNative网址:http://sourceforge.net/projects/jnative/files/jnative/ 下载JNative版本:JNative_1.4RC3_bin.zi ...