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协议 ...
随机推荐
- 五分钟掌握 for...in 和 for...of 区别
GitHub 地址,欢迎star,查看更多整理的前端知识 for...in for...in 语句以任意顺序遍历一个对象的可枚举属性. for...in 遍历对象本身的所有可枚举属性,以及对象从其构造 ...
- Python 2 和 Python 3 主要区别有哪些(1)
Guido(Python之父,仁慈的独裁者)在设计 Python3 的过程中,受一篇文章 “Python warts” 的影响,决定不向后兼容,否则无法修复大多数缺陷.---摘录自<流畅的Pyt ...
- centos7下安装Python3.7(与python2共存)
2019-01-22 22:50:05 centos7默认安装的是python2.7,然而python2基本上要淘汰了,所以有必要安装最新的python3 python,g++这些工具一般安装在/ ...
- 洛谷 P1938 [USACO09NOV] 找工就业Job Hunt
这道题可以说是一个复活SPFA的题 因为数据比较小,SPFA也比较简单 那就复习(复读)一次SPFA吧 #include<iostream> #include<cstdio> ...
- Java学习之集合框架的迭代器--Iteratorjk及ListItertor接口
通常情况下,你会希望遍历一个集合中的元素.例如,显示集合中的每个元素.一般遍历数组都是采用for循环或者增强for,这两个方法也可以用在集合框架,但是还有一种方法是采用迭代器遍历集合框架,它是一个对象 ...
- python019 Python3 File(文件) 方法
file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数: 序号 方法及描述 1 file.close() 关闭文件.关闭后文件不能再进行读写操作. 2 file.flush() ...
- Leetcode 306.累加数
累加数 累加数是一个字符串,组成它的数字可以形成累加序列. 一个有效的累加序列必须至少包含 3 个数.除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和. 给定一个只包含数字 '0'- ...
- Android渐变GradientDrawable叠加组合环ring
Android渐变GradientDrawable叠加组合环ring 写一个Android环形shape之间的叠加组合形成新图像的例子.代码: <?xml version="1. ...
- LeetCode:不同路径&不同路径II
不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). 问 ...
- [POJ1797] Heavy Transportation(最大生成树 || 最短路变形)
传送门 1.最大生成树 可以求出最大生成树,其中权值最小的边即为答案. 2.最短路 只需改变spfa里面的松弛操作就可以求出答案. ——代码 #include <queue> #inclu ...