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缓冲大小 我们进行套接字编程时往往只关注数据通信,而忽略了套接字具有的不同特性.但是,理解这些特性并根据实际需要进行更改也十分重要.之前我们写的程序在创建好套接字后都是未经特别操 ...
随机推荐
- vue-test ------事件监听
<template> <h3>监听器</h3> <p>{{message}}</p> <button @click="upd ...
- Oracle体系机构、基本术语
oracle实例.oracle数据库.oracle服务器,这三个术语容易混淆. oracle实例 实例是一个非固定的.基于内存基本进程和内存接口生成.当oracle服务器关闭后,实例也就消失. ora ...
- 用CloudDrive将阿里云、天翼云、115挂载为电脑本地硬盘
用CloudDrive将阿里云.天翼云.115挂载为电脑本地硬盘 写在前面 它可以把各大在线网盘,直接变成电脑本地硬盘,俗称"网盘挂载".这在一定程度上,确实能缓解存储紧张问题,瞬 ...
- Mysql性能优化这5点你知道吗?简单却容易被初学者忽略!
Mysql性能优化这5点你知道吗?简单却容易被初学者忽略! 文编|JavaBuild 哈喽,大家好呀!我是JavaBuild,以后可以喊我鸟哥,嘿嘿!俺滴座右铭是不在沉默中爆发,就在沉默中灭亡,一起加 ...
- 新版的Django中的path不能使用正则表达式
新版的path 虽然 取代了 之前的url,但是在写路由的时候不能在路由中直接写正则表达式,不然会找不到页面. 解决方法使用 re_path from django.urls import re_pa ...
- .NET开源、强大的Web报表统计系统
前言 今天分享一个.NET开源.强大的Web报表统计系统:CellReport. 项目官方介绍 CellReport 诞生的初衷是为了解决日常快速制作统计报表的需要. CellReport 是一个为复 ...
- JVM学习-Class文件结构
文章原文:https://gaoyubo.cn/blogs/844dc0e7.html 一.Class类文件的结构 任何一个Class文件都对应着唯一的一个类或接口的定义信息. 但是反过来说,类或接口 ...
- Midjourney 注册 12 步流程教学
原文: https://bysocket.com/midjourney-register/ 先推荐一个 PromptHero 中文官网 https://promptheroes.cn/ :Prompt ...
- 你知道,java项目中是如何获取文件地址的吗?
摘要:在java项目中我们经常会读取配置文件,但是文件的路径在获取时我们是怎么得到的?因为我总是忘记获取文件地址的方法,就在此记录一下 本文分享自华为云社区<[Java]Java项目的绝对地址和 ...
- 零售品牌如何挑选达人 KOL?火山引擎 VeDI 有妙招!
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 国内消费市场正在发生一些新变化. 近日,由中国人民大学国家发展与战略研究院.经济学院等联合主办的第 57 期宏观经 ...