创建一个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网络程序,客户端和服务端交互原理的更多相关文章

  1. c++ 网络编程(一)TCP/UDP windows/linux 下入门级socket通信 客户端与服务端交互代码

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9601511.html c++ 网络编程(一)TCP/UDP  入门级客户端与服务端交互代码 网 ...

  2. Android客户端与服务端交互之登陆示例

    Android客户端与服务端交互之登陆示例 今天了解了一下android客户端与服务端是怎样交互的,发现其实跟web有点类似吧,然后网上找了大神的登陆示例,是基于IntentService的 1.后台 ...

  3. java客户端与服务端交互通用处理 框架解析

    一.综述 java 客户端与服务端交互过程中,采用NIO通讯是异步的,客户端基本采用同一处理范式,来进行同异步的调用处理. 处理模型有以下几个要素: 1. NIO发送消息后返回的Future 2. 每 ...

  4. Java实现UDP之Echo客户端和服务端

    Java实现UDP之Echo客户端和服务端 代码内容 采用UDP协议编写服务器端代码(端口任意) 编写客户机的代码访问该端口 客户机按行输入 服务器将收到的字符流和接收到的时间输出在服务器consol ...

  5. Fresco 源码分析(二) Fresco客户端与服务端交互(1) 解决遗留的Q1问题

    4.2 Fresco客户端与服务端的交互(一) 解决Q1问题 从这篇博客开始,我们开始讨论客户端与服务端是如何交互的,这个交互的入口,我们从Q1问题入手(博客按照这样的问题入手,是因为当时我也是从这里 ...

  6. Fresco 源码分析(二) Fresco客户端与服务端交互(3) 前后台打通

    4.2.1.2.4 PipelineDraweeControllerBuilder.obtainController()源码分析 续 上节中我们提到两个核心的步骤 obtainDataSourceSu ...

  7. java网络编程客户端与服务端原理以及用URL解析HTTP协议

    常见客户端与服务端 客户端: 浏览器:IE 服务端: 服务器:web服务器(Tomcat),存储服务器,数据库服务器. (注:会用到Tomact服务器,在webapps下有一个自己创建的目录myweb ...

  8. cas sso单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析

    转:http://blog.csdn.net/ae6623/article/details/8848107 1)PPT流程图:ppt下载:http://pan.baidu.com/s/1o7KIlom ...

  9. SSO单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析

    落雨 cas 单点登录 一.用户第一次访问web1应用. ps:上图少画了一条线,那一条线,应该再返回来一条,然后再到server端,画少了一步...谢谢提醒.而且,重定向肯定是从浏览器过去的.我写的 ...

随机推荐

  1. bzoj 2599: [IOI2011]Race (点分治 本地过了就是过了.jpg)

    题面:(复制别人的...) Description 给一棵树,每条边有权.求一条路径,权值和等于K,且边的数量最小. Input 第一行 两个整数 n, k第二..n行 每行三个整数 表示一条无向边的 ...

  2. FFT/NTT总结+洛谷P3803 【模板】多项式乘法(FFT)(FFT/NTT)

    前言 众所周知,这两个东西都是用来算多项式乘法的. 对于这种常人思维难以理解的东西,就少些理解,多背板子吧! 因此只总结一下思路和代码,什么概念和推式子就靠巨佬们吧 推荐自为风月马前卒巨佬的概念和定理 ...

  3. CDQ分治总结(CDQ,树状数组,归并排序)

    闲话 CDQ是什么? 是一个巨佬,和莫队.HJT(不是我这个蒟蒻)一样,都发明出了在OI中越来越流行的算法/数据结构. CDQ分治思想 分治就是分治,"分而治之"的思想. 那为什么 ...

  4. shell 一

    1.shell是什么 shell是一种脚本语言 可以使用逻辑判断.循环等语法 可以自定义函数 shell是系统命令的集合 shell脚本可以实现自动化运维,能大大增加我们的运维效率 2.shell脚本 ...

  5. 使用debootstrap制作debian-jessie系统docker镜像

    先看一下Docker官网提示:In general, you'll want to start with a working machine that is running the distribut ...

  6. ->2018.06 计划

    2018.4.14->2018.06计划 力求掌握以下几种算法: 树链剖分 网络流 主席树 splay 莫队

  7. A1071. Speech Patterns

    People often have a preference among synonyms of the same word. For example, some may prefer "t ...

  8. ASP.NET MVC 网站优化之压缩技术

    压缩 html 可以去除代码中无用的空格等,这样可提高网站的加载速度并节省带宽. 实现 ActionFilter 来完成 html 的压缩 public class WhitespaceFilterA ...

  9. Web应用:当文件超过100KB,无法上传,有种原因你想象不到

    今天下午2点多,突然发现凡是文件超过100KB的,在上传的时候都会卡住,但低于100KB的文件可以上传成功. 服务器端使用的是asp无组件上传,为什么突然出现这种问题呢? 我们知道,IIS默认上传限制 ...

  10. 对程序进行package封装

    一.package包 格式:package 代码必须写在源代码文件的第一句, 约定俗成使用公司域名的倒写,之后再加其他. for example: package cn.chuanzhiboke.te ...