socket TCP DPT 网络编程
复习:
ARP协议:
广播和单播
通过ip地址获得mac地址
机器A发起一个arp请求(只包含A的ip地址)
交换机接收到请求,广播这条消息
所有的机器都会接受到这条请求,只有需要寻找的机器B的ip地址才能吻合
并回应交换机的广播(并带上自己的mac地址)
交换机通过单播的形式回复B的mac地址,并发送给A
TCP协议:
面向连接 可靠 全双工
三次握手:建立tcp连接
发数据
四次挥手:断开tcp连接
UDP协议:
无连接 不可靠 速度快
回环ip:
127.0.0.1
0.0.0.0
内容总览:
BS架构
CS架构
socket
BS架构:
brower 与 server
浏览器与服务器
例如:
server brower
博客园,百度,探宝,京东 360浏览器
CS架构:
client 和 server
用户与服务器
也就是说,客户需要安装一个客户端,然后才能与服务器取得联系
例如:
腾讯 qq应用
百度网盘服务器 百度云应用
总结:
BS架构也是CS架构的一种
pc端:
BS架构(浏览器与服务器架构)是一种趋势,统一了程序的入口
手机端:
微信公众号
小程序 都统一了程序的入口
sockst:
中文名字:套接字
这个模块主要是解决了传输层与应用层的链接,分为TCP UDP两种编程模式
TCP:
#server
import socket
sk = socket.socket()#买手机
sk.bind(('127.0.0.1',9000))#插手机卡
sk.listen(5)#开机 5代表最大排队等待人数
while True:
try:
conn,addr = sk.accept()#等电话
print(conn,addr)#等到了电话 之后的所有信息收发都建立在conn这个连接上
while True:
msg_send=input('>>>')
conn.send(msg_send.encode('utf-8'))
msg_rec = conn.recv(1024)#这里一定要传入参数,限制最大传入的字节
print(msg_rec.decode('utf-8'))
except UnicodeEncodeError:
pass
sk.close()#关机
#client
import socket
sk = socket.socket()
sk.connect(('127.0.0.1',9000))
while True:
msg_rec = sk.recv(1024)
print(msg_rec.decode('utf-8'))
msg = input('>>>')
sk.send(msg.encode('utf-8'))
sk.close()
UDP协议:
server端:
import socket
sk = socket.socket(type=socket.SOCK_DGRAM)
sk.bind(('127.0.0.1',9000))
while True:
msg,addr = sk.recvfrom(1024)
print(msg.decode('utf-8'))
if msg == b'q':
break
msg_send = input('>>>')
sk.sendto(msg_send.encode('utf-8'),addr)
if msg_send == 'q':break sk.close()
client端:
import socket
sk = socket.socket(type=socket.SOCK_DGRAM)
while True:
msg_send = input('>>>')
sk.sendto(msg_send.encode('utf-8'),('127.0.0.1',9000))
if msg_send == 'q':break
msg_recv,addr = sk.recvfrom(1024)
if msg_recv == b'q':break
print(msg_recv.decode('utf-8'))
sk.close()
socket TCP DPT 网络编程的更多相关文章
- 浅谈TCP/IP网络编程中socket的行为
我认为,想要熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉: 1. TCP/IP协议(如连接的建立和终止.重传和确认.滑动窗口和拥塞控制等等) 2. Socket I/O系统 ...
- TCP/IP网络编程系列之四(初级)
TCP/IP网络编程系列之四-基于TCP的服务端/客户端 理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于流的 ...
- TCP/IP网络编程系列之三(初级)
TCP/IP网络编程系列之三-地址族与数据序列 分配给套接字的IP地址和端口 IP是Internet Protocol (网络协议)的简写,是为首发网络数据而分配给计算机的值.端口号并非赋予计算机值, ...
- TCP/IP网络编程系列之二(初级)
套接字类型与协议设置 我们先了解一下创建套接字的那个函数 int socket(int domain,int type,int protocol);成功时返回文件描述符,失败时返回-1.其中,doma ...
- TCP/IP网络编程之多线程服务端的实现(二)
线程存在的问题和临界区 上一章TCP/IP网络编程之多线程服务端的实现(一)的thread4.c中,我们发现多线程对同一变量进行加减,最后的结果居然不是我们预料之内的.其实,如果多执行几次程序,会发现 ...
- TCP/IP网络编程之优于select的epoll(二)
基于epoll的回声服务端 在TCP/IP网络编程之优于select的epoll(一)这一章中,我们介绍了epoll的相关函数,接下来给出基于epoll的回声服务端示例. echo_epollserv ...
- TCP/IP网络编程之进程间通信
进程间通信基本概念 进程间通信意味着两个不同进程间可以交换数据,为了完成这一点,操作系统中应提供两个进程可以同时访问的内存空间.但我们知道,进程具有完全独立的内存结构,就连通过fork函数创建的子进程 ...
- TCP/IP网络编程之多播与广播
多播 多播方式的数据传输是基于UDP完成的,因此,与UDP服务端/客户端的实现非常接近.区别在于,UDP数据传输以单一目标进行,而多播数据同时传递到加入(注册)特定组的大量主机.换言之,采用多播方式时 ...
- TCP/IP网络编程之多进程服务端(二)
信号处理 本章接上一章TCP/IP网络编程之多进程服务端(一),在上一章中,我们介绍了进程的创建和销毁,以及如何销毁僵尸进程.前面我们讲过,waitpid是非阻塞等待子进程销毁的函数,但有一个不好的缺 ...
- TCP/IP网络编程之套接字的多种可选项
套接字可选项进而I/O缓冲大小 我们进行套接字编程时往往只关注数据通信,而忽略了套接字具有的不同特性.但是,理解这些特性并根据实际需要进行更改也十分重要.之前我们写的程序在创建好套接字后都是未经特别操 ...
随机推荐
- awk所有常用语法
awk [OPTIONS] PROGRAM FILE... 选项: -F 指定分隔符 -f 引用awk脚本 -v VAR=VALUE 定义一个变量传递给PROGRAM,但是这里的变量BEGIN读不了, ...
- 文心一言 VS 讯飞星火 VS chatgpt (162)-- 算法导论13.1 2题
二.用go语言,对图13-1中的红黑树,画出对其调用TREE-INSERT 操作插人关键字 36 后的结果.如果插人的结点被标为红色,所得的树是否还是一棵红黑树?如果该结点被标为黑色呢? 文心一言,代 ...
- emoji表情符号备忘单
记录目的:写文章的时候想用一些小表情或图片,但是上传图片太麻烦还不兼容 emoji表情符号就是很好的选择 国际通用,开箱即用(复制粘贴),兼容性强(理论上能放文本就能放emoji) 博客文档,git文 ...
- throws和try、catch有什么区别?throws如何使用?
在Java中,异常处理是非常重要的一部分.当程序出现异常时,我们需要对其进行处理以确保程序的正确性和可靠性.Java提供了两种异常处理机制:throws和try.catch. 区别 throws和tr ...
- GDAL从二进制数据流中构造数据集
目录 1. 概述 2. 实现 1. 概述 参看<从二进制数据流中构造GDAL可以读取的图像数据>这篇文章.这个问题的内涵在于,处理图像时都会将其读取成宽X高X波段的三维数组的内存Buffe ...
- LeetCode 回溯篇(46、77、78、51)
46. 全排列 给定一个 没有重复 数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1, ...
- .NET技术分享日活动-202110
2021年10月15日下午,个人组织举办了山东地区的第三次.NET技术分享日活动.围绕.NET.低代码Low Code.云原生 Cloud Native.大数据.算法等方向进行创新技术的实践分享. 本 ...
- 解决大模型“开发难”,昇思MindSpore自动并行技术应用实践
本文分享自华为云社区<DTSE Tech Talk|第35期:解决大模型"开发难",昇思MindSpore自动并行技术应用实践>,作者华为云社区精选. 昇思MindSp ...
- 十八般武艺玩转GaussDB(DWS)性能调优:总体调优策略
摘要: 性能调优是应用迁移或开发过程中的关键步骤,同时也在整个项目实施过程中占据很大的份量,本篇主要介绍数据库级别的性能调优思路和总体策略. 性能调优是应用迁移或开发过程中的关键步骤,同时也在整个项目 ...
- 知识+AI融合创新探索,华为云论文被AI顶级学术期刊IEEE TPAMI接受
摘要:通过利用物体类别之间存在的层级关系约束,自动学习从数据中抽取识别不同类别的规则,一方面对模型的预测过程进行解释,另一方面也提供了一条引入人工先验知识的可行途径. 前言 受益于深度学习技术的突破, ...