网络基础相关知识 , socket模块 , tcp协议通信代码 , tcp和udp编码流程

网络基础相关知识(1) 架构    C / S 架构: client 客户端 和 server 服务器端    优势:能充分发挥pc机的性能

    B / S 架构: browser 浏览器 和 server 服务器        隶属于C/S架构    B /S 架构 同意了应用的接口

(2) 通信    同意台电脑上两个py程序通信 : 打开一个文件    两台电脑通信 : 联网    多个电脑通信 : 电脑1发送一个请求帧,其中包含(我的IP和我的mac地址,和我要找的IP地址为xxxxxxx的主机),将此请求发送给交换机,交换机广播这条消息给其他所有主机                   ,目标主机接到这条消息后回复给交换机消息(我的IP地址和mac地址,请回复给源主机(实际这里是IP和mac来代替源主机)),交换机以单播的形式返回给源主机

mac 地址 : 是一个物理地址,全球唯一,类似于身份证ip  地址 : 是一个四位点分十进制,它标识了计算机在网络中的位置

交换机的通信方式:    广播 : 吼一嗓子,发送给每台计算机    单播 : 一对一    组播 : 一对多

arp 协议 : 通过目标 ip 地址获取目标 mac 地址的一个协议端口 : 操作系统为本机上每一个运行的程序都随机分配一个端口,其他电脑上的程序可以通过端口获取到这个程序ip 地址 + 端口  能找到唯一某台电脑上的某一个服务程序路由器 : 连接不同网段 , 路由网关 : 类似于一个局域网的出口和入口网段 : 一个局域往内的ip地址范围子网掩码 : 子网掩码 & ip地址 得到网段

osi 五层模型:应用层         :   http , https , ftp传输层         :   tcp/udp                  四层交换机 , 四层路由器网络层         :   ip协议                   路由器 , 三层交换机数据链路层     :   arp协议                  交换机 , 网卡 , 网桥物理层         :   传输电信号               集成器 , 网线 , 光纤

socket 模块    import socket    socket 又叫做套接字    sk = socket.socket(family = AF_INET,type = SOCK_STREAM)    family:        一种 : AF_UNIX 基于文件类型的套接字(早起socket是源自于unix系统而研发的一个功能,主要是为了同一台电脑上,多个程序直接通信)        一种 : AF_INET 基于网络类型的套接字

    type :        一种是基于 TCP 协议      SOCK_STREAM        一种是基于 UDP 协议      SOCK_DGRAMtcp 协议 : 可靠的,面向连接的,面向字节流形式的额传输方式udp 协议 : 不可靠的,不面向连接的,面向数据报的传输方式,但是传输速度快
TCP编码流程:         type=SOCK_STREAM(tcp协议不用传类型,默认tcp协议)服务器端:                                                             客户端:    导入模块                       import socket                            导入模块    实例化对象                     sk=socket.socket() 套接字                实例化对象    绑定 ip+port(端口)             bind(元组)    监听                           listen()    等待连接                       accept()                                 连接服务器 connect/connect_ex(不抛异常,返回错误码)    收发                           recv/send                                收发    关闭                           close                                    关闭

UDP编码流程:      type=SOCK_DGRAM服务器端:                                                   客户端:    导入模块                  import socket                     导入模块    实例化对象                sk=socket.socket()                实例化对象    绑定 ip+port(端口)        bind    收发                      recvfrom/sendto                   收发    关闭                      close                             关闭
tcp和udp的区别tcp 面向连接,可靠,面向字节流形式,粘包,只允许一个服务器在同一时间和一个客户端保持通信udp 不面向连接,不可靠,面向数据报形式,传输速度快,不粘包.允许一个服务器在同一时间和多个客户端保持连接
例(同一台电脑上,服务器与客户端相互通信)代码:同一台电脑两个py文件通信(下面两个py文件配合使用)服务器需要一个py文件
# 服务器(代码):
import socket
sk=socket.socket()      #不传参数,默认使用基于网络类型的套接字,协议:TCP
sk.bind(('192.168.12.30',18907))    #端口的范围是0-65535   但是 0-1023 这些别用
sk.listen()     #同时能接受的连接
while 1:conn,addr=sk.accept()     #等待接受客户端的连接  ,  阻塞等待while 1:print('输入q退出聊天')ms_r=conn.recv(10033333).decode('utf-8')    #接收 , 接收客户端传来的内容conn.recv(能接收的最大长度).decode('utf-8')接收过来解码成utf-8格式print(ms_r)if ms_r.upper()=='Q':breaki=input('>>>')conn.send(i.encode('utf-8'))    #发送 , conn.send()发送  i.encode('utf-8')将要传输的内容编码成bytes类型进行传输if i.upper()=='Q':breakconn.close()
sk.close()

客户端也需要一个py文件

客户端(代码):

# 客户端(代码):
import socket
sk=socket.socket()
sk.connect(('192.168.12.30',18907))     #连接到服务器
while 1:print('输入q退出')count=input('请输入内容')        #输入要发送的内容sk.send(count.encode('utf-8'))      #发送if count.upper() == 'Q':breakma=sk.recv(10033333).decode('utf-8')    #接收 , 接收服务器传输的内容sk.recv(能接收到额最大长度) , decode('utf-8')解码if ma.upper()=='Q':breakprint(ma)
sk.close()

转载于:https://www.cnblogs.com/hdy19951010/p/9468930.html

网络编程 socket模块 tcp协议 udp协议相关推荐

  1. java网络编程socket\server\TCP笔记(转)

    java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04|  分类: Socket |  标签:java  |举报|字号 订阅 1 TCP的开销 a  连接 ...

  2. java 中的网络编程(Socket、TCP三次握手四次挥手、TCP/UDP/URL)

    文章目录 前言 一.网络编程概述 二.网络通信要素概述 1.如何实现网络中的主机互相通信 2.网络通信协议 3.IP和端口号 4.InetAddress类 5.网络协议 6.TCP/IP协议簇 7.T ...

  3. 27.Linux网络编程socket变成 tcp 高并发 线程池 udp

    好,咱们开始上课了,从今天开始咱们连续讲 8 天的,网络编程这个还是在linux环境下去讲,咱们先看一下咱们这 8 天都讲什么东西,跟大家一块来梳理一下,你先有个大概的印象,这些你也不要记,那么网络编 ...

  4. 基于socket网络编程技术实现TCP和UDP的流程详解及实例

    具体函数讲解太多,根据程序自行分析. 可以参考这篇文章: https://blog.csdn.net/qq_41687938/article/details/119102328?spm=1001.20 ...

  5. udp协议没有粘包问题、基于socketserver实现并发的socket(基于tcp、udp协议)、基于udp协议的套接字、操作系统原理以及进程知识

    基于udp协议的套接字通信服务端 from socket import *server=socket(AF_INET,SOCK_DGRAM) #数据报协议->udp server.bind((' ...

  6. 【Socket网络编程】4.tcp和udp的客户端和服务端收发流程

    tcp和udp的客户端和服务端收发流程 1.udp服务器流程: 1.创建serverSocket 2.设置服务器地址 serverAddr 3.将serverSocket和serverAddr绑定 b ...

  7. python 网络编程--socket模块/struct模块

    socket模块: 客户端:CS架构,  client -> server 浏览器:BS架构,  browser -> server 网络通信本质:传输字节 doc命令查看ip地址:ipc ...

  8. tcp udp区别优缺点_Linux网络编程面试题--tcp和udp的区别

    (1)TCP是基于连接的,UDP是基于无连接的. (2)TCP的数据是可靠的,UDP的数据是不可靠的. (3)TCP的数据是有序的,UDP的数据是无序的. (4)TCP不保存用户边界,UDP保存用户边 ...

  9. JavavEE中网络编程Socket套接字Ⅰ(UDP)

    文章目录 Socket套接字 TCP和UDP的区别 UDP socket DatagramSocket DatagramPacket

最新文章

  1. 关于正则表达式 g,m 参数的总结,为了回答“正则表达式(/[^0-9]/g,'')中的/g是什么意思?”...
  2. day1-数据库基础
  3. SQL Server 跨数据库事务
  4. 【mysql】linux安装mysql
  5. 查看网关物理地址命令
  6. 如何找到 SAP Spartacus OCC cms page 发送请求时读取 API endpoint 的代码
  7. linux --- 高级指令
  8. 前端学习(1569):todoMVC准备工作
  9. oracle向右削减和补全,b操纵序列削减Oracle数据库开辟工作量-开辟技术/b[Oracle防范]...
  10. java设计模式中的动态代理
  11. “坦克大战”小游戏(C语言)源代码及其详解注释
  12. 编码:隐匿在计算机软硬件背后的语言(1)--编码到二进制数字系统
  13. 老毛桃u盘装系统linux,分享老毛桃u盘装系统教程
  14. 一百块组装可玩LOL的电脑
  15. SIM800C音频设计指南
  16. 操作系统知识点(考试版)
  17. Linux服务器上设置全局代理访问外网并验证
  18. 绕过content-type检测文件类型上传webshell
  19. Python_基础知识02
  20. Spring框架设计模式分析

热门文章

  1. (回文串)Manacher算法
  2. [repost]Xcode因为证书问题经常报的那些错
  3. .NET之全平台一体化的体验
  4. 修改文档框架:word-多级列表与标题样式相结合
  5. Notepad++添加右键菜单
  6. sql server left join 重复数据原因图
  7. 架构设计贵在务实(转载)
  8. httpclient解析https网页
  9. latex下的表格处理
  10. NS安装问题收集(3)