TCP协议,UDP协议
帅爆太阳的男人
1,TCP协议
- 回环地址:127.0.0.1(所有电脑都这一个默认回环地址)每个计算机都有这么一个本机地址只能被本机识别,不会被其他机器识别(因为你用这个地址传内容他就传不出去)
- TCP三次握手:一定是client先发起请求
- a:客户端发起请求连接服务器
- b:服务器返回:接收到请求,并要求连接客户端
- c:客户端回复:可以连接
- 四次握手:client和server谁发起断开请求都可以
- a:客户端发起断开连接的请求
- 意思是:我想和你断开连接,我没有数据要继续发送了,但是如果你有数据要继续发送,我可以继续接受
- b:服务器回复:我接收到你的请求了
- c:服务器发送:我已经准备好断开连接了
- d:客户端回复:收到你的信息,断开连接
- a:客户端发起断开连接的请求



2,UDP协议及编码
- sk = socket.socket(type = SOCK_DGRAM)
- UDP协议通信的优势:
- 允许一个服务器同时和多个客户端通信而TCP协议不行
- 2.1>普通UDP协议代码
import socket # 服务器
sk = socket.socket(type=socket.SOCK_DGRAM)
sk.bind(("127.0.0.1",8008))
while 1:
mas_s,addr = sk.resvfrom(1024)
print(mas_s.decode("utf-8"),addr)
message = sk.sendto(input(">>>").encode("utf-8"),addr)
sk.close() # 当然程序执行不到这
import socket # 客户端
sk = socket.socket(type=socket.SOCK_DGRAM)
while 1:
mas_c = sk.sendto(input(">>>").encode("utf-8"),("127.0.0.1",8008))
mass = sk.resvfrom(1024)
print(mass.decode("utf-8"))
sk.close()
- 2.2>带署名的UDP协议(接收到的不在是IP地址,而是名字)
- 服务端:
import socket
sk = socket.socket(type=SOCK_STREAM)
sk.bind(("127.0.0.1",8008))
conn, addr = sk.accept()
while 1:
mas_s = sk.resvfrom(1024)
print(mas_s.decode("utf-8"),addr)
message = sk.sendto(input(">>>").encode("utf-8"))
- 客户端:
import socket
sk = socket.socket(type=SOCK_DGRAM)
name = input("name:")
while 1:
msg_c = input(">>>")
info = name + ":" + msg_c
sk.sendto(info.encode("utf-8"),("127.0.0.1",8008))
msg_r = sk.resvfrom(1024)
print(msg_r.decode("utf-8"))
3,pycharm输出带颜色的操作
- 格式:\033[字体颜色:背景颜色m 数据 \033[0m
- 服务端
import socket
sk = socket.socket(typr=socket.SOCK_DGRAM)
sk.bind(("127.0.0.1",8008))
dic = {"alex":"\033[32m","金老板":"\033[33m","小雪":"\033[35m"}
while 1:
msg_r,addr = sk.recvfrom(1024)
msg_r = msg_r.decode("utf-8")
name = msg_r[0].strip()
color = dic.get(name)
print("%s %s\033[0m" % (color,msg_r))
msg_s = input(">>>")
sk.sendto(msg_s.encode("utf-8"))
sk.close()
- 客户端
import socket
sk = socket.socket(type=socket.SOCK_DGRAM)
name = input("请输入您的芳名:")
while 1:
msg_c = input(">>>")
info = name + ":"+ msg_c
sk.sendto(info.encode("utf-8"),("127.0.0.1"))
msg_d,addr = sk.recvfrom(1024)
print(msg_d.decode("utf-8"))
sk.close()
TCP协议,UDP协议的更多相关文章
- TCP与UDP协议
传输控制协议(Transmission Control Protocol, TCP)和用户数据报协议(User Datagram Protocol, UDP)是典型的传输层协议. 传输层协议基于网络层 ...
- TCP和UDP协议的区别
TCP和UDP都是传输层的协议 UDP协议的特点: UDP协议是一种无连接的.不可靠的传输层协议(尽力而为的协议) 为什么说UDP是一种无连接.不可靠的协议呢?UDP协议在传输报文之前不需要在双方之间 ...
- TCP和UDP协议的比较
通信协议 网络通信是两台计算机上的两个进程之间的通信. 网络通信需要通信协议.网络协议有很多种,就像我们平常交流说话,也有多种语言.. 最常见的协议是TCP/IP协议.UDP协议. TCP:TCP 是 ...
- 网络编程协议(TCP和UDP协议,黏包问题)以及socketserver模块
网络编程协议 1.osi七层模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 2.套接字 socket 有两类,一种基于文件类型,一种基于网络类型 3.Tcp和udp协议 ...
- 面试:TCP和UDP协议
目录 TCP 协议 UDP协议 TCP和UDP的区别 TCP和UDP的使用场景 一 TCP协议 1.TCP的头部格式 理解TCP协议,首要的就是TCP协议的头部格式 · Source P ...
- TCP 和 UDP 协议
TCP 和 UDP 协议 一.socket层 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐 ...
- 运输层协议--TCP及UDP协议
TCP及UDP协议 按照网络的五层分级结构来看,TCP及UDP位于运输层,故TCP及UDP是运输层协议.TCP协议--传输控制协议UDP协议--用户数据报协议 多路复用及多路分解 图多路复用及多路分解 ...
- TCP和UDP 协议发送数据包的大小
在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好? 当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,这里仅对像ICQ一类的发送聊天消息的情况作分 ...
- TCP/IP/UDP 协议
互连网早期的时候,主机间的互连使用的是NCP协议.这种协议本身有很多缺陷,如:不能互连不同的主机,不能互连不同的操作系统,没有纠错功能.为了改善这种缺点,大牛弄出了TCP/IP协议.现在几乎所有的操作 ...
- 网络编程协议(TCP和UDP协议,粘包问题)以及socketserver模块
网络编程协议 1.osi七层模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 2.套接字 socket 有两类,一种基于文件类型,一种基于网络类型 3.Tcp和udp协议 ...
随机推荐
- 第二章:C++简单程序设计
主要内容: 1.C++语言概述 2.基本数据类型和表达式 3.数据的输入与输出 4.算法的基本控制结构 5.自定义数据类型 1.数据类型default is double 2.自定义数据类型就是bui ...
- Java:获取文件内容
文章来源:https://www.cnblogs.com/hello-tl/p/9139353.html import java.io.*; public class FileBasicOperati ...
- python_OS 模块
os模块 用于提供系统级别的操作 os.getcwd() # 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") # 改变当前脚本工作目 ...
- 关于最新版本react-native0.59.x构建的问题解决方案
react-native的版本更新是真的快,几乎几天就是一个小版本,然而在这个过程中,对于新手来说,成功构建一个,并跑起来的项目,还是有一定难度的,各种问题,一不小心,你就会发现你的时间全部都浪费在了 ...
- CS academy Growing Trees【模板】DP求树的直径
[题意概述] 给出一棵树,树上的边有两个值a和b,你可以在[0,limit]范围内选择一个整数delta,树上的边的权值为a+b*delta,现在问当delta为多少的时候树的直径最小.最小直径是多少 ...
- [AI开发]基于DeepStream的视频结构化解决方案
视频结构化的定义 利用深度学习技术实时分析视频中有价值的内容,并输出结构化数据.相比数据库中每条结构化数据记录,视频.图片.音频等属于非结构化数据,计算机程序不能直接识别非结构化数据,因此需要先将这些 ...
- python004 Python3 解释器
Python3 解释器Linux/Unix的系统上,一般默认的 python 版本为 2.x,我们可以将 python3.x 安装在 /usr/local/python3 目录中.安装完成后,我们可以 ...
- 使现有的VSCode成为便携版(绿色版)
VSCode可以说是各种代码编辑器前端之中的神器了,相对体积小且扩展性强,我们希望将它携带在U盘中在各种工作环境中使用,官方也提供了在Windows,Linux和MacOS三大平台中使VSCode便携 ...
- hdu 1728 逃离迷宫 [ dfs ]
传送门 逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- usort 使用(转载)
private function arrCmp($a,$b){ if($a['day_time'] == $b['day_time']){ return 0; } return($a['day_ti ...