udp是无链接的,启动服务之后可以直接接受消息不需要提前建立链接

UDP协议的通信优势:

允许一个服务器同时和多个客户端通信,

TCP不行

服务端

import socket

sk = socket.socket(type=socket.SOCK_DGRAM)
sk.bind(('127.0.0.1', 8888)) while 1:
# 接收 msg_r, addr = sk.recvfrom(1024)
str_msg = msg_r.decode('utf-8')
if str_msg == 'q':
continue
else:
# 用':'分割字符串一次 变成列表
lis = str_msg.split(':', 1)
# 姓名
na = lis[0].strip()
# 信息
info = lis[1].strip()
print('\033[1;37;40m' + na + ':\033[0m' + info) # 发送
msg_s = input('我:')
if msg_s != 'q':
sk.sendto(msg_s.encode('utf-8'), addr)
else:
sk.sendto(msg_s.encode('utf-8'), addr)
break sk.close()

客户端

import socket
name = input('请输入你的姓名:\n')
sk = socket.socket(type=socket.SOCK_DGRAM) while 1:
# 发送
msg_s = input('>>>')
if msg_s != 'q':
sk.sendto((name +':'+ msg_s).encode('utf-8'),('127.0.0.1',8888))
else:
sk.sendto((msg_s).encode('utf-8'),('127.0.0.1',8888))
break # 接收
msg_r,addr = sk.recvfrom(1024)
if msg_r.decode('utf-8') == 'q':
break
else:
print(msg_r.decode('utf-8'))

网络编程: 基于UDP协议的socket的更多相关文章

  1. 网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程

    Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...

  2. java 网络编程基础 UDP协议的Socket:DatagramSocket;广播Socket:MulticastSocket

    什么是UDP协议: UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket 但这两个 Socket之间并没有虚拟链路,这两个Socket只是发送.接收数据报的对象.Java 提供了 ...

  3. 网络编程(基于udp协议的套接字/socketserver模块/进程简介)

    一.基于UDP协议的套接字 TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP,UDP则是面向无连接的协议. 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就 ...

  4. JAVA基础知识之网络编程——-基于UDP协议的通信例子

    UDP是一种不可靠的协议,它在通信两端各建立一个socket,这两个socket不会建立持久的通信连接,只会单方面向对方发送数据,不检查发送结果. java中基于UDP协议的通信使用DatagramS ...

  5. UNIX网络编程——基于UDP协议的网络程序

    一.下图是典型的UDP客户端/服务器通讯过程 下面依照通信流程,我们来实现一个UDP回射客户/服务器: #include <sys/types.h> #include <sys/so ...

  6. 网络编程: 基于TCP协议的socket, 实现一对一, 一对多通信

    TCP协议  面向连接 可靠的 面向字节流形式的 tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 TCP协议编码流程: 服务器端:                 客户端 实例化对 ...

  7. 基于UDP协议的socket编程

    UDP协议特点: 1.无连接.服务端与客户端传输数据之前不需要进行连接,且没有超时重发等机制,只是把数据通过网络发送出去.也正是因为此特点,所以基于UDP协议的socket的客户端在启动之前不需要先启 ...

  8. python 全栈开发,Day34(基于UDP协议的socket)

    昨日内容回顾 网络的基础概念arp协议 :通过ip地址找到mac地址五层模型 : 应用层 传输层 网络层 数据链路层 物理层tcp协议 : 可靠的 面向连接 全双工 三次握手 四次挥手udp协议 : ...

  9. day31——recv工作原理、高大上版解决粘包方式、基于UDP协议的socket通信

    day31 recv工作原理 源码解释: Receive up to buffersize bytes from the socket. 接收来自socket缓冲区的字节数据, For the opt ...

随机推荐

  1. webstorm 调出project

    Alt+1就能弹出窗口面板.    视图-工具窗口-Project 删除项目 Click File > Close project From Recent projects, select pr ...

  2. Ubuntu 16.04下的安装RabbitMQ

    安装 添加源 echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/ra ...

  3. JS-DOM Element方法和属性

    JS-DOM Element方法和属性 S-DOM Element方法和属性一,获取html元素1.getElementByID(id)通过对元素的ID访问,这是DOM一个基础的访问页面元素的方法.e ...

  4. 【xsy1232】Magic 最小割

    题目大意:给你一个$n$个点,$m$条有向边的图,每个点有一个点权$a_i$,同时你可以用$b_i$的代价将$a_i$变为$0$ 另外你要付出$\sum\limits_{i=1}^n\max\limi ...

  5. 【GDKOI2016】 魔卡少女 线段树

    题目大意:给你一个长度为n的序列${a_1....a_n}$,有$m$次操作 每次操作有两种情况:修改$a_i$的值,询问$[l,r]$中所有子区间的异或和. 数据范围:$n,m≤10^5$,$a_i ...

  6. POJ 1243

    #include <iostream> #include <algorithm> #include <cmath> #define MAXN 50 using na ...

  7. 7.xamarin.android 发布签名与控制apk大小

    概述 做了xamarin android 后大家想打包一个apk,发布给其他人使用本章我们将带领大家如何打包签名一个apk. 打包 对于VS2017 或者是VS MAC来说打包一个APK非常简单. 首 ...

  8. 部分替换mysql表中某列的字段

    UPDATE `table_name` SET `field_name` = replace (`field_name`,'from_str','to_str') WHERE `field_name` ...

  9. 江苏公务员职位表导入MySQL

    USE `database`; /*Table structure for table `post` */ DROP TABLE IF EXISTS `post`; CREATE TABLE `pos ...

  10. 面向UI编程框架:ui.js框架思路详细设计

    由于上一次的灵光一闪,萌生了对面向UI编程的思想实现.经过一段时间的考虑和设计,现在将思想和具体细节记录下来: 具体思路描述: 在UI.config文件中,配置所有参数,比如页面模板.所有组件.组件控 ...